## https://yukicoder.me/problems/no/3502 def main(): N, W = map(int, input().split()) X = list(map(int, input().split())) Y = list(map(int, input().split())) max_w = max(W, max(X)) x_map = [0 for _ in range(max_w + 1)] for i in range(N): x = X[i] y = Y[i] x_map[x] += y answer = [0] * (max_w + 1) for x in reversed(range(1, max_w + 1)): y = x while y <= max_w: answer[x] += x_map[y] y += x ans = 0 for w in range(W, max_w + 1): ans = max(ans, answer[w]) print(ans) if __name__ == "__main__": main()