#include <fstream>
#include <algorithm>
#define MaxChar 1000
#define verf ( (++CharB==MaxChar) ? ( in.read(Buffer,MaxChar),CharB=0 ) : (1) )
#define NMAX 307
using namespace std;
ifstream in("teren.in");
ofstream out("teren.out");
int n, m, k;
int Ans;
int D[NMAX][NMAX], a[NMAX][NMAX];
int CharB = MaxChar - 1;
char Buffer[MaxChar];
void cit(int &a){
bool ok = 0;
for( ; !( (Buffer[ CharB ]>='0' && Buffer[ CharB ]<='9') || ( Buffer[ CharB ] == '-' ) ); verf );
if(Buffer[ CharB ] == '-'){
++CharB;
ok = 1;
}
for( a = 0; (Buffer[ CharB ]>='0' && Buffer[ CharB ]<='9'); a *= 10, a += ( Buffer[ CharB ]-'0'), verf );
if(ok)
a = -a;
}
int main(){
cit(n);
cit(m);
cit(k);
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= m; ++j){
cit(a[i][j]);
D[i][j] = D[i][j - 1] + a[i][j];
}
for(int i = 1; i <= m; ++i)
for(int j = 1; j <= m; ++j){
int Cnt = 1, Sum = 0;
for(int l = 1; l <= n; ++l){
Sum += D[l][j] - D[l][i - 1];
while(Cnt <= l && Sum > k){
Sum -= D[Cnt][j] - D[Cnt][i - 1];
++Cnt;
}
Ans = max(Ans, (j - i + 1) * (l - Cnt + 1));
}
}
out << Ans;
}