def isok(r): tmp=B[r]-B[l-1]-(B2[r]-B2[l-1])*l if tmp<=H: return True return False N,H=map(int,input().split()) A=list(map(int,input().split())) B=list(map(int,input().split())) for i in range(N-1): A[i+1]+=A[i] A+=[0] B2=B[::] B=[B[i]*(i+1) for i in range(N)] for i in range(N-1): B[i+1]+=B[i] B2[i+1]+=B2[i] B2+=[0] B+=[0] ans=0 for l in range(N): left,right=l-1,N while right-left>1: mid=(right+left)//2 if isok(mid): left=mid else: right=mid ans=max(A[left]-A[l-1],ans) #print(l,left,A[left]-A[l-1],B[left]-B[l-1]-(B2[left]-B2[l-1])*l) print(ans)