INT = lambda : int(input()) MI = lambda : map(int, input().split()) MI_DEC = lambda : map(lambda x : int(x)-1, input().split()) LI = lambda : list(map(int, input().split())) LI_DEC = lambda : list(map(lambda x : int(x)-1, input().split())) INF = float('inf') CEIL = lambda a, b : (a + b - 1) // b N, H = MI() A = LI() B = LI() Bsums = [0] for i in range(N): Bsums.append(Bsums[i] + B[i]) ans, a, h, d = 0, 0, 0, 1 right = 0 for left in range(N): while right < N and h + B[right] * d <= H: a += A[right] h += B[right] * d d += 1 right += 1 ans = max(ans, a) if left == right: right += 1 else: d -= 1 a -= A[left] h -= (Bsums[right] - Bsums[left]) print(ans)