#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
int n,m,q;
cin>>n>>m>>q;
int sum1 = 0;
int sum2 = 0;
bool hi = true;
vector<int> n1;
vector<int> n2;
n1.resize(m);
n2.resize(m);
for (int i = 0;i<m;i++){
cin>>n1[i];
sum1+=n1[i];
}
for (int i = 0;i<m;i++){
cin>>n2[i];
sum2+=n2[i];
}
if (sum1<sum2) {hi = false;swap(n1,n2);swap(sum1,sum2);}
sort(n1.begin(),n1.end());
sort(n2.begin(),n2.end());
vector<int> m1;
vector<int> m2;
m1.resize(m);
int sum3 = sum1;
for (int i = 0;i<m;i++){
m1[i] = sum1-n1[i];
sum1 = sum1-n1[i];
}
m2.resize(m);
for (int i = 0;i<m;i++){
if (i==0) m2[0] = sum2-n2[m-i-1]+q;
else m2[i] = m2[i-1]-n2[m-i-1]+q;
}
int ans = 0;
for (int i = 0;i<m;i++){
int a;
if (hi) a = upper_bound(m2.begin(),m2.end(),m1[i])-m2.begin();
else a = lower_bound(m2.begin(),m2.end(),m1[i])-m2.begin();
if (!(a==0 and m1[i]==0 and !hi))ans = max(ans,i+1+a);
}
if (hi) {
int a =upper_bound(m2.begin(),m2.end(),sum3)-m2.begin();
ans = max(ans,a);}
else {
int a = lower_bound(m2.begin(),m2.end(),sum3)-m2.begin();
if (a!=0 and m2[a--]>sum3)ans = max(ans,a);
}
cout<<2*m-ans;
return 0;
}