from math import gcd def divisors(x): ret = [] i = 1 while (i**2 <= x): if x%i == 0: ret.append(i) if i != x//i: ret.append(x//i) i += 1 return ret n,w = map(int,input().split()) x = list(map(int,input().split())) y = list(map(int,input().split())) d = [] for xi in x: d += divisors(xi) ss = sorted(set(d)) d0 = {v:i for i,v in enumerate(ss)} d1 = {i:v for i,v in enumerate(ss)} dp = [0 for _ in range(len(ss))] for xi,yi in zip(x,y): ndp = [0 for _ in range(len(ss))] for i in range(len(ss)): ndp[i] = max(dp[i],ndp[i]) ni = d0[gcd(xi,d1[i])] ndp[ni] = max(dp[i]+yi,ndp[ni]) dp = ndp ans = 0 for i in range(len(ss)): if d1[i] >= w: ans = max(dp[i],ans) print(ans)