classSolution{public:intminSubArrayLen(int target, vector<int>& nums){int n = nums.size();int len = n +1;for(int i =0, j =0, s =0; i < n; i++){
s += nums[i];while(s >= target){
len =min(len, i - j +1);
s -= nums[j++];}}if(len == n+1)return0;return len;}};
#include<bits/stdc++.h>usingnamespace std;constint N =110;int a[N][N], sum[N][N], f[N];int m, n, k;intmain(){
cin>>m>>n>>k;for(int i =1; i <= m; i++){for(int j =1; j <= n; j++){
cin>>a[i][j];
sum[i][j]= sum[i-1][j]+ a[i][j];}}int ans = INT_MAX;for(int i =1; i <= m; i++){// 枚举的首行 for(int j = i; j <= m; j++){// 枚举的末行memset(f,0,sizeof f);for(int u =1; u <= n; u++) f[u]= sum[j][u]- sum[i-1][u];// 一维子数组大于等于k的最短长度int len = n+1;// 双指针for(int i =1, j =1, s =0; i <= n; i++){
s += f[i];while(s >= k){// 只有正数才满足
len =min(len, i - j +1);
s -= f[j++];}}if(len == n+1)continue;
ans =min(ans, len*(j - i +1));}}if(ans == INT_MAX) cout<<"-1"<<endl;else cout<<ans<<endl;return0;}