#include<bits/stdc++.h>
using namespace std;
#define int long long
#define vi vector<int>
#define ff first
#define ss second
#define file_se_input freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
#define pp long long int
#define setbits(x) __builtin_popcountll(x)
#define zrobits(x) __builtin_ctzll(x)
#define pb push_back
#define mp make_pair
#define pi 3.141592653589793238
#define eb emplace_back
#define rep(i,a,b) for (int i = a; i <= b; i++)
#define zip(i,a,b) for(int i=a;i<b;i++)
#define rzip(i,a,b) for(int i=a;i>=b;i--)
#define ll unsigned long long int
#define test int t;cin>>t; while(t--)
#define um unordered_map
#define en '\n'
#define us unordered_set
typedef pair<int, int> pii;
typedef pair<char, int> pci;
typedef pair<char, char> pcc;
typedef vector<pii> vii;
typedef long double ld;
#define all(v) v.begin(), v.end()
#define INF (1e18+5)
#define inf (1e9+5)
#define mod 1000000007
bool check_prime(long long n)
{
int flag = 0;
for (long long i = 2; i * i <= n; i++)
{
if (n % i == 0)
{
flag = 1;
break;
}
}
if (n == 1)
return false;
else if (flag == 0 || n == 2 || n == 3)
{
return true;
}
else
{
return false;
}
}
int BE(int x, int n, int m) //function to calculate x raise to power n modulo m
{
int result = 1;
while (n > 0)
{
if (n % 2 == 1)
result = result * x % m;
x = x * x % m;
n = n / 2;
}
return result;
}
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(0);
#ifndef ONLINE_JUDGE
if (fopen("input.txt", "r"))
{
freopen ("input.txt" , "r" , stdin);
freopen ("output.txt" , "w" , stdout);
}
#endif
//_______________________________-code starts-_______________________________________________
int n, m, k;
cin >> n >> m >> k;
int a[n], b[m];
zip(i, 0, n) cin >> a[i];
zip(i, 0, m) cin >> b[i];
int cnt = 0;
int i = 0, j = 0;
while (i < n || j < m)
{
if (i < n && j < m)
{
if (a[i] < b[j])
{
if (k >= a[i])
{
k -= a[i];
i++;
cnt++;
if (k <= 0)
break;
}
else
{
break;
}
}
else if (a[i] > b[j])
{
if (k >= b[j])
{
k -= b[j];
j++;
cnt++;
if (k <= 0)
break;
}
else
{
break;
}
}
else
{
int x = a[i];
int i1 = i;
int j1 = j;
int cnt1 = 0, cnt2 = 0;
while (a[i1] == x && i1 < n - 1)
{
i1++;
cnt1++;
if (cnt1 >= 2)
break;
}
while (b[j1] == x && j1 < m - 1)
{
j1++;
cnt2++;
if (cnt2 >= 2)
break;
}
if (a[i1] < b[j1])
{
if (k >= a[i])
{
k -= a[i];
i++;
cnt++;
if (k <= 0)
break;
}
else
{
break;
}
}
else if (a[i1] >= b[j1])
{
if (k >= b[j])
{
k -= b[j];
j++;
cnt++;
if (k <= 0)
break;
}
else
{
break;
}
}
}
}
else if (i < n)
{
if (k >= a[i])
{
k -= a[i];
i++;
cnt++;
if (k <= 0)
break;
}
else
{
break;
}
}
else if (j < m)
{
if (k >= b[j])
{
k -= b[j];
j++;
cnt++;
if (k <= 0)
break;
}
else
{
break;
}
}
else
{
break;
}
}
cout << cnt << en;
return 0;
}