#include <iostream>
using namespace std;
#define MAX 101
#define INF 0x7fffffff
int sumOfMat(int i, int j, int width, int length, int(&arr)[MAX][MAX]){
// 统计从(i,j)为首的矩阵的所有元素和
int sum;
sum=arr[i+width-1][j+length-1]-arr[i-1][j+length-1]-arr[i+width-1][j-1]+arr[i-1][j-1];
return sum;
}
int minMatArea(int n, int m, int k, int(&arr)[MAX][MAX]) { // 使用引用传递二维数组
int minArea = INF;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
for(int width=1;width<=n-i+1;width++){ // 特别注意 width、length上界
for(int length=1;length<=m-j+1;length++){
int curSum=sumOfMat(i, j, width, length, arr);
if(curSum>=k && minArea>=width*length){
// 更新条件:1、sum >= k 2、area最小
minArea=width*length;
}
}
}
}
}
if(minArea==INF) minArea=-1;
return minArea;
}
int main() {
int arr[MAX][MAX]={0}; // 首行列全部初始化为0
int n, m, k;
cin >> n >> m >> k;
for (int i = 1; i <= n; i++) { // 读取数据,并计算前缀和矩阵
for (int j = 1; j <= m; j++) {
cin >> arr[i][j];
arr[i][j]+=arr[i-1][j]+arr[i][j-1]-arr[i-1][j-1];
}
}
cout << minMatArea(n, m, k, arr) << endl;
return 0;
}