using System;
using System.IO.Pipes;
using System.Linq;
//二分探索or尺取り法

namespace C
{
    class Program
    {
        public static int k;
        public static int max = 0;
        public static int[] A, B;
        static void Main(string[] args)
        {
            string[] In = Console.ReadLine().Split(' ');
            int n = int.Parse(In[0]);
            int m = int.Parse(In[1]);
            k = int.Parse(In[2]);
            //A = Read.LongN();
            //B = Read.LongN();
            A = new int[n];
            B = new int[m];
            string[] In2 = Console.ReadLine().Split(' ');
            for (int i = 0; i < n; i++)
            {
                A[i] = int.Parse(In2[i]);
            }
            string[] In3 = Console.ReadLine().Split(' ');
            for (int i = 0; i < m; i++)
            {
                B[i] = int.Parse(In3[i]);
            }
            long t = 0;
            for(int i = 0; i < m; i++)//m冊読んだことにする
            {
                t += B[i];
            }
            int j = m;
            int max = 0;
            for(int i = 0; i < n + 1; i++)//片方固定して、もう片方を減らしていく
            {
                while (j > 0 && t > k)
                {
                    --j;
                    t -= B[j];
                }
                if (t > k) break;
                max = (int)Math.Max(max, i + j);
                if (i == n) break;
                t += A[i];
            }
            Console.WriteLine(max);
        }
    }
    static class Read 
    {
        public static long[] LongN() { return Console.ReadLine().Split(' ').Select(s => Convert.ToInt64(s)).ToArray(); }
    }
}
//namespace C
//{
//    class Program
//    {
//        public static int k;
//        public static int max=0;
//        public static int[] A, B;
//        static void Main(string[] args)
//        {
//            string[] In = Console.ReadLine().Split(' ');
//            int n = int.Parse(In[0]);
//            int m = int.Parse(In[1]);
//            k = int.Parse(In[2]);
//            A = new int[n];
//            B = new int[m];
//            string[] In2 = Console.ReadLine().Split(' ');
//            for (int i=0; i < n; i++)
//            {
//                A[i]=int.Parse(In2[i]);
//            }
//            string[] In3 = Console.ReadLine().Split(' ');
//            for (int i = 0; i < m; i++)
//            {
//                B[i]=int.Parse(In3[i]);
//            }
//            DFS(0, -1, A[0], 1);//a_idx,b_idx,sum,cnt
//            DFS(-1, 0, B[0], 1);
//            Console.WriteLine(max);
//        }
//        public static void DFS(int a, int b, long sum, int cnt)
//        {
//            if(sum > k)
//            {
//                Check(cnt-1);
//                return;
//            }
//            if (a+1==A.Length && b+1 == B.Length)
//            {
//                Check(cnt);
//                return;
//            }
//            if (a+1 != A.Length) DFS(a + 1, b, sum + A[a+1], cnt + 1);
//            if (b+1 != B.Length) DFS(a, b + 1, sum + B[b+1], cnt + 1);
//        }
//        public static void Check(int cnt)
//        {
//            if (cnt > max) max = cnt;
//        }
//    }
//}


Measured memory_bytes: 67676