
let input = require("fs").readFileSync("/dev/stdin", "utf8")

function main() {
    const [N,M,K] = load(3)
    const A = load(N)
    const B = load(M)
 
    const Ad = [0], Bd = [0]
    for(let i = 0; i < N; i++) Ad.push(Ad[i]+A[i])
    for(let i = 0; i < M; i++) Bd.push(Bd[i]+B[i])
 
    let result = 0
    for(let i = 0, j = M; i <= N; i++) {
        if(Ad[i] > K) break
        while(Ad[i] + Bd[j] > K) j--
        result = Math.max(result, i + j)
    }
 
    return result
}


let inputs = input.split(/[\s\n]/)
console.log(main())


// 入力値を読み込む
function load(rows = 1, cols = 1, type = Number) {
    const length = rows * cols
    let result = inputs.splice(0, length)

    if(type !== String) result = result.map(type)
    if(cols > 1) {
        const arrays = new Array(cols)
        for(let col = 0; col < cols; col++) {
            arrays[col] = new Array()
            for(let row = 0; row < rows; row++) {
                arrays[col].push(result[row * cols + col])
            }
        }
        result = arrays
    }

    return result
}
