import math



def solve(n,m,k,a_lst,b_lst):

    #机ごと、読書時間の累積をリストにする。ただし、リスト化はk時間内で読める範囲とする

    aa_lst = make_sum_list(a_lst,k)

    bb_lst = make_sum_list(b_lst,k)

    len_aa = len(aa_lst)

    len_bb = len(bb_lst)



    #A,Bいずれかが一冊も読めないケースを考慮

    if len_aa == 0:

        if len_bb == 0: return 0

        else: return len_bb

    elif len_bb == 0: return len_aa

    

    #全て読めるケースを考慮

    if aa_lst[-1] + bb_lst[-1] <= k: return len_aa + len_bb 

    

    #A,Bいずれかのみ読むケースを考慮

    max_read = max(len_aa,len_bb)



    #リスト範囲でA+Bの最大値を探索する。2分探索を用いる

    for i in reversed(list(range(len_aa))):

        time = aa_lst[i]

        read = i + 1

        if read + len_bb + 1 <= max_read:

            break

        imax = len_bb-1

        imin = 0

        imid = len_bb // 2

        while True:

            if time + bb_lst[imid] <= k:

                #OK。大を調べる

                if imax - imid <= 1:

                    #探査終了

                    if time + bb_lst[imax] <= k:

                        read += imax + 1

                    else:

                        read += imid + 1

                    break

                imin = imid

            else:

                #NG。小を調べる

                if imid - imin <= 1:

                    #探査完了

                    if time + bb_lst[imin] <= k:

                        read += imin + 1

                    break

                imax = imid

            imid = (imin + imax) // 2

        max_read = max(read,max_read)

    return max_read





def make_sum_list(lst,max):

    sum_lst = []

    sum = 0

    for n in lst:

        sum += n

        if sum > max:

            break

        sum_lst.append(sum)

    return sum_lst



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

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

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

ans = solve(n,m,k,a_lst,b_lst)

print(ans)
import math



def solve(n,m,k,a_lst,b_lst):

    #机ごと、読書時間の累積をリストにする。ただし、リスト化はk時間内で読める範囲とする

    aa_lst = make_sum_list(a_lst,k)

    bb_lst = make_sum_list(b_lst,k)

    len_aa = len(aa_lst)

    len_bb = len(bb_lst)



    #A,Bいずれかが一冊も読めないケースを考慮

    if len_aa == 0:   return len_bb

    elif len_bb == 0: return len_aa

    

    #全て読めるケースを考慮

    if aa_lst[-1] + bb_lst[-1] <= k: return len_aa + len_bb 

    

    #A,Bいずれかのみ読むケースを考慮

    max_read = max(len_aa,len_bb)



    #リスト範囲でA+Bの最大値を探索する。2分探索を用いる

    for i in reversed(list(range(len_aa))):

        limit = k - aa_lst[i]

        read = i + 1

        if read + len_bb + 1 <= max_read:

            #以後 read は増えない

            break



        imax = len_bb-1

        imin = 0

        imid = len_bb // 2

        while True:

            if bb_lst[imid] <= limit:

                #OK。大を調べる

                if imax - imid <= 1:

                    #探査終了

                    if bb_lst[imax] <= limit:

                        read += imax + 1

                    else:

                        read += imid + 1

                    break

                imin = imid

            else:

                #NG。小を調べる

                if imid - imin <= 1:

                    #探査完了

                    if bb_lst[imin] <= limit:

                        read += imin + 1

                    break

                imax = imid

            imid = (imin + imax) // 2

        max_read = max(read,max_read)

    return max_read



def make_sum_list(lst,max):

    sum_lst = []

    sum = 0

    for n in lst:

        sum += n

        if sum > max:

            break

        sum_lst.append(sum)

    return sum_lst



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

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

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

ans = solve(n,m,k,a_lst,b_lst)

print(ans)
import math


def solve(n, m, k, a_lst, b_lst):
    # 机ごと、読書時間の累積をリストにする。ただし、リスト化はk時間内で読める範囲とする
    aa_lst = make_sum_list(a_lst, k)
    bb_lst = make_sum_list(b_lst, k)
    len_aa = len(aa_lst)
    len_bb = len(bb_lst)
    # A,Bいずれかが一冊も読めないケースを考慮
    if len_aa == 0:
        if len_bb == 0:
            return 0
        else:
            return len_bb
    elif len_bb == 0:
        return len_aa
    # 全て読めるケースを考慮
    if aa_lst[-1] + bb_lst[-1] <= k:
        return len_aa + len_bb
    # A,Bいずれかのみ読むケースを考慮
    max_read = max(len_aa, len_bb)
    # リスト範囲でA+Bの最大値を探索する。2分探索を用いる
    for i in reversed(list(range(len_aa))):
        time = aa_lst[i]
        read = i + 1
        if read + len_bb + 1 <= max_read:
            break
        imax = len_bb - 1
        imin = 0
        imid = len_bb // 2
        while True:
            if time + bb_lst[imid] <= k:
                # OK。大を調べる
                if imax - imid <= 1:
                    # 探査終了
                    if time + bb_lst[imax] <= k:
                        read += imax + 1
                    else:
                        read += imid + 1
                    break
                imin = imid
            else:
                # NG。小を調べる
                if imid - imin <= 1:
                    # 探査完了
                    if time + bb_lst[imin] <= k:
                        read += imin + 1
                    break
                imax = imid
            imid = (imin + imax) // 2
        max_read = max(read, max_read)
    return max_read


def make_sum_list(lst, max):
    sum_lst = []
    sum = 0
    for n in lst:
        sum += n
        if sum > max:
            break
        sum_lst.append(sum)
    return sum_lst


n, m, k = list(map(int, input().split()))
a_lst = list(map(int, input().split()))
b_lst = list(map(int, input().split()))
ans = solve(n, m, k, a_lst, b_lst)
print(ans)

import math


def solve(n, m, k, a_lst, b_lst):
    # 机ごと、読書時間の累積をリストにする。ただし、リスト化はk時間内で読める範囲とする
    aa_lst = make_sum_list(a_lst, k)
    bb_lst = make_sum_list(b_lst, k)
    len_aa = len(aa_lst)
    len_bb = len(bb_lst)
    # A,Bいずれかが一冊も読めないケースを考慮
    if len_aa == 0:
        return len_bb
    elif len_bb == 0:
        return len_aa
    # 全て読めるケースを考慮
    if aa_lst[-1] + bb_lst[-1] <= k:
        return len_aa + len_bb
    # A,Bいずれかのみ読むケースを考慮
    max_read = max(len_aa, len_bb)
    # リスト範囲でA+Bの最大値を探索する。2分探索を用いる
    for i in reversed(list(range(len_aa))):
        limit = k - aa_lst[i]
        read = i + 1
        if read + len_bb + 1 <= max_read:
            # 以後 read は増えない
            break
        imax = len_bb - 1
        imin = 0
        imid = len_bb // 2
        while True:
            if bb_lst[imid] <= limit:
                # OK。大を調べる
                if imax - imid <= 1:
                    # 探査終了
                    if bb_lst[imax] <= limit:
                        read += imax + 1
                    else:
                        read += imid + 1
                    break
                imin = imid
            else:
                # NG。小を調べる
                if imid - imin <= 1:
                    # 探査完了
                    if bb_lst[imin] <= limit:
                        read += imin + 1
                    break
                imax = imid
            imid = (imin + imax) // 2
        max_read = max(read, max_read)
    return max_read


def make_sum_list(lst, max):
    sum_lst = []
    sum = 0
    for n in lst:
        sum += n
        if sum > max:
            break
        sum_lst.append(sum)
    return sum_lst


n, m, k = list(map(int, input().split()))
a_lst = list(map(int, input().split()))
b_lst = list(map(int, input().split()))
ans = solve(n, m, k, a_lst, b_lst)
print(ans)

-        if len_bb == 0: -            return 0 -        else: -            return len_bb +        return len_bb -        time = aa_lst[i] +        limit = k - aa_lst[i] +            # 以後 read は増えない -            if time + bb_lst[imid] <= k: +            if bb_lst[imid] <= limit: -                    if time + bb_lst[imax] <= k: +                    if bb_lst[imax] <= limit: -                    if time + bb_lst[imin] <= k: +                    if bb_lst[imin] <= limit: