#include #include #include #include std::vector divisors (const int x, const int W) { std::vector res; for (int d = 1; d <= std::sqrt(x); ++d) { if (x % d == 0) { if (x / d >= W) { res.push_back(x / d); if (d >= W && d * d != x) res.push_back(d); } else break; } } return res; } int main() { int N, W; std::cin >> N >> W; std::map s; std::vector X(N), Y(N); for (int& x : X) std::cin >> x; for (int& y : Y) std::cin >> y; for (int i = 0; i < N; ++i) { for (int d : divisors(X[i], W)) { s[d] += Y[i]; } } long long ans = 0; for (auto& p : s) { long long ysum = p.second; if (ans < ysum) ans = ysum; } std::cout << ans << std::endl; }