#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
unsigned long long t,maxn,ans=0,n,m;
unsigned long long l,r,mid;
unsigned long long a[112121121],b[121121211];
bool check(unsigned long long x){
unsigned long long s=0;
for(unsigned long long i=1;i<=t;i++){
if(a[i]+b[i]*x>=m){
s+=a[i]+b[i]*x;
}
if(s>=n){
break;
}
}
if(s<=n){
return 1;
}
return 0;
}
int main () {
cin >> t >> n >> m;
for(unsigned long long i=1;i<=t;i++){
cin >> a[i];
}
for(unsigned long long i=1;i<=t;i++){
cin >> b[i];
}
l=1,r=1e18;
unsigned long long p=0;
if(t==1){
unsigned long long i;
if(a[1]>=n){
cout << 0;
return 0;
}
for(i=1;i<=10005;i++){
if(a[1]+b[1]*i>=n){
printf("%lld",i);
return 0;
}
}
}
while(l<=r){
mid=(l+r)/2;
if(check(mid)){
ans=mid;
l=mid+1;
}
else{
r=mid-1;
p++;
}
}
if(p>=10000){
cout << 0;
return 0;
}
cout << ans+1;
return 0;
}
rt