import sys input = sys.stdin.readline N=int(input()) B=int(input()) C=list(map(int,input().split())) S=list(map(int,input().split())) A=[] for i in range(N): A.append((C[i],S[i])) A.sort() MAX=[0]*N MAX[-1]=A[-1][1] for i in range(N-2,-1,-1): MAX[i]=max(MAX[i+1],A[i][1]) MAX.append(0) ANS=0 now=B score=0 for i in range(N): nec=MAX[i+1] c,s=A[i] if now-c*s>=nec: now-=c*s score+=s ANS=max(ANS,score+nec) else: k=(now-nec)//c for j in range(k-3,k+4): if j>=1 and j<=s and now-j*c>=1: score2=score+j now2=now-j*c ANS=max(ANS,score2+min(nec,now2)) k=min(s,now//c) now-=c*k score+=k print(ANS)