def Eratosthenes(n): isPrime = [True]*(n+1) isPrime[0], isPrime[1] = False, False for i in range(2, n+1): if isPrime[i]: for j in range(i*i, n+1, i): isPrime[j] = False return isPrime def fast_zeta(F): isPrime = Eratosthenes(len(F)) for i in range(2, len(F)): if isPrime[i]: for j in range((len(F)-1)//i, 0, -1): F[j] += F[j*i] def fast_mobius(F): isPrime = Eratosthenes(len(F)) for i in range(2, len(F)): if isPrime[i]: for j in range(1, (len(F)-1)//i+1): F[j] -= F[j*i] N, W = map(int, input().split()) X = list(map(int, input().split())) Y = list(map(int, input().split())) S = [0]*(10**5*2+1) for i in range(N): S[X[i]] += Y[i] fast_zeta(S) print(max(S[W:]))