# -*- coding: utf-8 -*-

# 標準入力を取得

N, M, K = list(map(int, input().split()))

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

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



# 求解処理

a, b = [0], [0]

for i in range(N):

    a.append(a[i] + A[i])

for j in range(M):

    b.append(b[j] + B[j])



ans, j = 0, M

for i in range(N + 1):

    if a[i] > K:

        break

    while b[j] > K - a[i]:

        j -= 1

    ans = max(ans, i + j)



# 結果出力

print(ans)

# -*- coding: utf-8 -*-



def get_input() -> tuple:

    """

    標準入力を取得する.



    Returns:\n

        tuple: 標準入力

    """

    N, M, K = list(map(int, input().split()))

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

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



    return N, M, K, A, B





def main(N: int, M: int, K: int, A: list, B: list) -> None:

    """

    メイン処理.



    Args:\n

        N (int): 机Aの本の数（1 <= N <= 200000）

        M (int): 机Bの本の数（1 <= M <= 200000）

        K (int): 合計所要時間の上限（1 <= K <= 10^9）

        A (list): 机Aの本を読むための時間

        B (list): 机Bの本を読むための時間

    """

    # 求解処理

    a, b = [0], [0]

    for i in range(N):

        a.append(a[i] + A[i])

    for j in range(M):

        b.append(b[j] + B[j])



    ans, j = 0, M

    for i in range(N + 1):

        if a[i] > K:

            break

        while b[j] > K - a[i]:

            j -= 1

        ans = max(ans, i + j)



    # 結果出力

    print(ans)





if __name__ == "__main__":

    # 標準入力を取得

    N, M, K, A, B = get_input()



    # メイン処理

    main(N, M, K, A, B)

# -*- coding: utf-8 -*-
# 標準入力を取得
N, M, K = list(map(int, input().split()))
A = list(map(int, input().split()))
B = list(map(int, input().split()))
# 求解処理
a, b = [0], [0]
for i in range(N):
    a.append(a[i] + A[i])
for j in range(M):
    b.append(b[j] + B[j])
ans, j = 0, M
for i in range(N + 1):
    if a[i] > K:
        break
    while b[j] > K - a[i]:
        j -= 1
    ans = max(ans, i + j)
# 結果出力
print(ans)

# -*- coding: utf-8 -*-
def get_input() -> tuple:
    """
    標準入力を取得する.
    Returns:\n
        tuple: 標準入力
    """
    N, M, K = list(map(int, input().split()))
    A = list(map(int, input().split()))
    B = list(map(int, input().split()))
    return N, M, K, A, B


def main(N: int, M: int, K: int, A: list, B: list) -> None:
    """
    メイン処理.
    Args:\n
        N (int): 机Aの本の数（1 <= N <= 200000）
        M (int): 机Bの本の数（1 <= M <= 200000）
        K (int): 合計所要時間の上限（1 <= K <= 10^9）
        A (list): 机Aの本を読むための時間
        B (list): 机Bの本を読むための時間
    """
    # 求解処理
    a, b = [0], [0]
    for i in range(N):
        a.append(a[i] + A[i])
    for j in range(M):
        b.append(b[j] + B[j])
    ans, j = 0, M
    for i in range(N + 1):
        if a[i] > K:
            break
        while b[j] > K - a[i]:
            j -= 1
        ans = max(ans, i + j)
    # 結果出力
    print(ans)


if __name__ == "__main__":
    # 標準入力を取得
    N, M, K, A, B = get_input()
    # メイン処理
    main(N, M, K, A, B)

-# 標準入力を取得 -N, M, K = list(map(int, input().split())) -A = list(map(int, input().split())) -B = list(map(int, input().split())) -# 求解処理 -a, b = [0], [0] -for i in range(N): -    a.append(a[i] + A[i]) -for j in range(M): -    b.append(b[j] + B[j]) -ans, j = 0, M -for i in range(N + 1): -    if a[i] > K: -        break -    while b[j] > K - a[i]: -        j -= 1 -    ans = max(ans, i + j) -# 結果出力 -print(ans) +def get_input() -> tuple: +    """ +    標準入力を取得する. +    Returns:\n +        tuple: 標準入力 +    """ +    N, M, K = list(map(int, input().split())) +    A = list(map(int, input().split())) +    B = list(map(int, input().split())) +    return N, M, K, A, B + + +def main(N: int, M: int, K: int, A: list, B: list) -> None: +    """ +    メイン処理. +    Args:\n +        N (int): 机Aの本の数（1 <= N <= 200000） +        M (int): 机Bの本の数（1 <= M <= 200000） +        K (int): 合計所要時間の上限（1 <= K <= 10^9） +        A (list): 机Aの本を読むための時間 +        B (list): 机Bの本を読むための時間 +    """ +    # 求解処理 +    a, b = [0], [0] +    for i in range(N): +        a.append(a[i] + A[i]) +    for j in range(M): +        b.append(b[j] + B[j]) +    ans, j = 0, M +    for i in range(N + 1): +        if a[i] > K: +            break +        while b[j] > K - a[i]: +            j -= 1 +        ans = max(ans, i + j) +    # 結果出力 +    print(ans) + + +if __name__ == "__main__": +    # 標準入力を取得 +    N, M, K, A, B = get_input() +    # メイン処理 +    main(N, M, K, A, B)