#include using namespace std; #define rep(i, a, b) for (int i = (int)(a); i < (int)(b); i++) #define rrep(i, a, b) for (int i = (int)(a); i > (int)(b); i--) #define ll long long #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define PQ priority_queue, greater> #define PQ_g priority_queue, vector>, greater>> #define chmin(a, b) a = min(a, b) #define chmax(a, b) a = max(a, b) const int d4[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; const int d8[8][2] = {{0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}, {-1, -1}, {-1, 0}, {-1, 1}}; void Yes(bool b) {cout << (b ? "Yes" : "No") << endl;} int main() { int n, w; cin >> n >> w; vector> goods(200001, vector(0)); vector x(n); vector y(n); rep(i, 0, n) cin >> x[i]; rep(i, 0, n) cin >> y[i]; rep(i, 0, n) { goods[x[i]].push_back(y[i]); } ll ans = 0LL; rep(d, w, 200001) { vector d_goods; for (int i = 0; i <= 200000; i += d) { for (auto &g: goods[i]) d_goods.push_back(g); } ll sum = 0LL; for (auto &g: d_goods) sum += g; ans = max(ans, sum); } cout << ans << endl; }