#include <bits/stdc++.h>
#define ll long long
#define len(x) (int)x.size()
#define all(x) x.begin(), x.end()

using namespace std;

#define mtask

void solve(){
//    int n;
//    cin >> n;
//    deque<pair<string, int>> d;
//    long long tim = 0;
//    for(int i = 0; i < n; ++i){
//        string s;
//        int ln;
//        cin >> s >> ln;
//        d.push_back({s, ln});
//    }
//
    int n, l;
    cin >> n >> l;
    l = abs(l);
    vector<ll> dp(3005, 1e18);
    vector<int> a(n);
    vector<int> b(n);
    for(int i = 0; i < n; ++i){
        cin >> a[i];
    }
    for(int j = 0; j < n; ++j){
        cin >> b[j];
    }
    for(int i = 0; i < n; ++i){
        dp[a[i]] = min(dp[a[i]], (ll)b[i]);
        for(int j = 1; j < 3005; ++j){
            dp[gcd(a[i], j)] = min(dp[gcd(a[i], j)], dp[j] + b[i]);
        }
    }
    ll res = 1e18;
    for(int i = 1; i < len(dp); ++i){
        if(l % i == 0){
            res = min(res, dp[i]);
        }
    }
    if(res == 1e18){
        cout << "-1\n";
        return;
    }
    cout << res << '\n';
}

int main() {
    ios_base::sync_with_stdio(false);
#ifdef LOCAL
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#endif
#ifdef mtask
    int t;
    cin >> t;
    while(t--)
#endif
    solve();
}