import sys def solve(): input_data = sys.stdin.read().split() if not input_data: return N = int(input_data[0]) W = int(input_data[1]) if N == 0: print(0) return max_x = 0 X = [0] * N for i in range(N): x = int(input_data[2 + i]) X[i] = x if x > max_x: max_x = x # Jika barang paling berat saja kurang dari W, mustahil FPB >= W if max_x < W: print(0) return # sum_Y[w] akan menyimpan total nilai Y untuk semua barang dengan berat tepat w sum_Y = [0] * (max_x + 1) for i in range(N): y = int(input_data[2 + N + i]) sum_Y[X[i]] += y max_ans = 0 # Coba semua kemungkinan target FPB (G) mulai dari W sampai max_x for g in range(W, max_x + 1): cur_sum = 0 # Ambil semua barang yang beratnya merupakan kelipatan dari G for m in range(g, max_x + 1, g): cur_sum += sum_Y[m] if cur_sum > max_ans: max_ans = cur_sum print(max_ans) if __name__ == '__main__': solve()