void main(){
	long n, m, k;
	readf("%d %d %d\n", &n, &m, &k);
	long[] a = _scanln!long();
	long[] b = _scanln!long();
	long cnt;
	// aの配列から要素をi個分カウント
	foreach(i; 0..n+1){
		if(a[0..i].sum > k )break; // kの条件を満たさなくなれば終了
		long tmp_cnt = i;
		long tmp_k = k;
		k	-= a[0..i].sum();
		// 残りをbの配列から条件kを満たすようにカウント
		foreach(j; 0..m){
			if( tmp_k>=b[j] ){
				tmp_k -= b[j];
				tmp_cnt++;
			}else break;
		}
		if(tmp_cnt>cnt)cnt = tmp_cnt;
	}
	cnt.writeln();
}

import std.stdio, std.conv, std.algorithm, std.numeric, std.string, std.math, std.range, std.container;

// 1要素のみの入力
T _scan(T= int)(){
	return to!(T)( readln().chomp() );
}

// 1行に同一型の複数入力
T[] _scanln(T = int)(){
	T[] ln;
	foreach(string elm; readln().chomp().split()){
		ln ~= elm.to!T();
	}
	return ln;
}
