importjava.util.Arrays;importjava.util.Scanner;publicclassMain{staticlong[] lena =newlong[100000];staticlong[] lenb =newlong[100000];publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int[] a =newint[n];int[] b =newint[m];long[] aq =newlong[n+1];long[] bq =newlong[m+1];for(int i =1; i <= a.length; i++){
a[i-1]= sc.nextInt();
aq[i]= aq[i-1]+ a[i-1];}for(int i =1; i <= b.length; i++){
b[i-1]= sc.nextInt();
bq[i]= bq[i-1]+ b[i-1];}int x = sc.nextInt();Arrays.fill(lena,Integer.MAX_VALUE);Arrays.fill(lenb,Integer.MAX_VALUE);//记录a b数组长度为len时的最小区间和for(int len =1; len <= n; len ++){for(int l =1; l <= n - len +1; l ++){int r = l + len -1;
lena[len]=Math.min(lena[len], aq[r]- aq[l -1]);}}for(int len =1; len <= m; len ++){for(int l =1; l <= m - len +1; l++){int r = l + len -1;
lenb[len]=Math.min(lenb[len], bq[r]- bq[l -1]);}}long ans =0;for(int i =1; i <= n; i++){int l =1,r = m;while(l < r){int mid =(l+r+1)/2;if(check(i,mid,x)){
l = mid;}else{
r = mid -1;}}if(lena[i]* lenb[l]<= x){
ans =Math.max(ans, l*i);}}System.out.println(ans);}publicstaticbooleancheck(int i ,int mid,int x){return lena[i]*lenb[mid]<= x;}}