from itertools import accumulate

import bisect



n, m, k = list(map(int, input().split()))

a = list(map(int, input().split()))

b = list(map(int, input().split()))



a_acc = [0] + list(accumulate(a))  # aを0冊読む=1冊も読まない場合があるので、[0]を先頭に追加します

b_acc = list(accumulate(b))  # bisect_rightでは、x以下の要素がいくつあるか？を求めるので、こちらに0は入れません



ans = 0

for an in range(n + 1):

    rem = k - a_acc[an]

    if rem < 0:

        # aをこれ以上読めません

        break



    bn = bisect.bisect_right(b_acc, rem)

    ans = max(ans, an + bn)



print(ans)
from itertools import accumulate



n, m, k = list(map(int, input().split()))

a = list(map(int, input().split()))

b = list(map(int, input().split()))



a_acc = [0] + list(accumulate(a))

b_acc = [0] + list((accumulate(b)))



ans = 0

bn = m



for an in range(n + 1):

    rem = k - a_acc[an]

    if rem < 0:

        break



    # rem >= 0 かつ、b_acc[0] = 0なので、bnはどんなに減っても0で必ず止まります。マイナスになってバグることはありません

    while b_acc[bn] > rem:

        bn -= 1

    ans = max(ans, an + bn)



print(ans)
from itertools import accumulate
import bisect

n, m, k = list(map(int, input().split()))
a = list(map(int, input().split()))
b = list(map(int, input().split()))
a_acc = [0] + list(accumulate(a))  # aを0冊読む=1冊も読まない場合があるので、[0]を先頭に追加します
b_acc = list(accumulate(b))  # bisect_rightでは、x以下の要素がいくつあるか？を求めるので、こちらに0は入れません
ans = 0
for an in range(n + 1):
    rem = k - a_acc[an]
    if rem < 0:
        # aをこれ以上読めません
        break
    bn = bisect.bisect_right(b_acc, rem)
    ans = max(ans, an + bn)
print(ans)

from itertools import accumulate

n, m, k = list(map(int, input().split()))
a = list(map(int, input().split()))
b = list(map(int, input().split()))
a_acc = [0] + list(accumulate(a))
b_acc = [0] + list((accumulate(b)))
ans = 0
bn = m
for an in range(n + 1):
    rem = k - a_acc[an]
    if rem < 0:
        break
    # rem >= 0 かつ、b_acc[0] = 0なので、bnはどんなに減っても0で必ず止まります。マイナスになってバグることはありません
    while b_acc[bn] > rem:
        bn -= 1
    ans = max(ans, an + bn)
print(ans)

-import bisect -a_acc = [0] + list(accumulate(a))  # aを0冊読む=1冊も読まない場合があるので、[0]を先頭に追加します -b_acc = list(accumulate(b))  # bisect_rightでは、x以下の要素がいくつあるか？を求めるので、こちらに0は入れません +a_acc = [0] + list(accumulate(a)) +b_acc = [0] + list((accumulate(b))) +bn = m -        # aをこれ以上読めません -    bn = bisect.bisect_right(b_acc, rem) +    # rem >= 0 かつ、b_acc[0] = 0なので、bnはどんなに減っても0で必ず止まります。マイナスになってバグることはありません +    while b_acc[bn] > rem: +        bn -= 1