#include #include #include using namespace std; // Sử dụng mảng tĩnh để tối ưu tốc độ long long sum_v[200005]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int N, W; if (!(cin >> N >> W)) return 0; int max_w = 0; for (int i = 0; i < N; ++i) { int w, v; cin >> w >> v; if (w < 200005) { sum_v[w] += v; if (w > max_w) max_w = w; } } long long max_ans = 0; // Chỉ xét các g >= W theo gợi ý for (int g = W; g <= max_w; ++g) { long long current_gcd_sum = 0; // Duyệt qua các bội số của g: g, 2g, 3g... for (int multiple = g; multiple <= max_w; multiple += g) { current_gcd_sum += sum_v[multiple]; } if (current_gcd_sum > max_ans) { max_ans = current_gcd_sum; } } cout << max_ans << endl; return 0; }