#include #define MAXX 200000 long long sumVal[MAXX + 1]; int main(void) { int N, W; scanf("%d %d", &N, &W); int X[200005]; long long Y[200005]; for (int i = 0; i < N; i++) { scanf("%d", &X[i]); } for (int i = 0; i < N; i++) { scanf("%lld", &Y[i]); sumVal[X[i]] += Y[i]; } long long ans = 0; for (int d = W; d <= MAXX; d++) { long long cur = 0; for (int multiple = d; multiple <= MAXX; multiple += d) { cur += sumVal[multiple]; } if (cur > ans) ans = cur; } printf("%lld\n", ans); return 0; }