#include <bits/stdc++.h>
     
    using namespace std;
    #define rep2(i,m,n) for(int i=(int)(m);i<(int)(n);i++)
    #define rep(i,n) rep2(i,0,n)
    int h,w,n;
    int a[210][210]={0};
    int m[210][210]={0};
     
    int me(int h1,int h2,int w1,int w2){
    	int r=m[h2][w2]-m[h2][w1-1]-m[h1-1][w2]+m[h1-1][w1-1];
    if(r<0) r=0;
    return r;
    }
     
    int ch(int h1,int h2,int w1,int w2){
    int r=0;
    for(int i=h1;i<h2;i++){
    r=max(r,min(me(h1,i,w1,w2),me(i+1,h2,w1,w2)));
    }
    for(int i=w1;i<w2;i++){
    r=max(r,min(me(h1,h2,w1,i),me(h1,h2,i+1,w2)));
    }
    return r;
    }
     
     
    int main() {
    	//int h,w,n;
    cin>>h>>w>>n;
    for(int i=1;i<=h;i++){
    for(int j=1;j<=w;j++){
    cin>>a[i][j];
    m[i][j]=m[i-1][j]+m[i][j-1]-m[i-1][j-1]+a[i][j];
    }
    }
     
    if(n==2){
    int r=0;
    for(int i=1;i<h;i++){
    r=max(r,min(me(1,i,1,w),me(i+1,h,1,w)));
    }
    for(int i=1;i<w;i++){
    r=max(r,min(me(1,h,1,i),me(1,h,i+1,w)));
    }
    cout<<r<<endl;
    return 0;
     
    }
     
    if(n==3){
    int r=0;
    for(int i=1;i<h;i++){
    r=max(r,min(ch(1,i,1,w),me(i+1,h,1,w)));
    //cout<<r<<endl;
    r=max(r,min(ch(i+1,h,1,w),me(1,i,1,w)));
    //cout<<r<<endl;
     
    }
    for(int i=1;i<w;i++){
    r=max(r,min(ch(1,h,1,i),me(1,h,i+1,w)));
    r=max(r,min(ch(1,h,i+1,w),me(1,h,1,i)));
    //cout<<r<<endl;
    }
     
     
    cout<<r<<endl;
    }
     
    if(n==4){
    int r=0;
    int e;
    for(int i=1;i<h;i++){
    for(int j=i;j<h;j++){
    for(int k=1;k<w;k++){
    for(int l=k;l<w;l++){
    e=min(min(me(1,i,1,l),me(1,j,l+1,w)),min(me(i+1,h,1,k),me(j+1,h,k+1,w)));
    r=max(r,e);
    e=min(min(me(1,j,1,k),me(1,i,k+1,w)),min(me(j+1,h,1,l),me(i+1,h,l+1,w)));
    r=max(r,e);
    }
    }
    }
    }
     
    for(int i=1;i<h;i++){
    for(int j=i;j<h;j++){
    e=min(me(1,i,1,w),min(me(i+1,j,1,w),ch(j+1,h,1,w)));
    r=max(r,e);
    e=min(me(1,i,1,w),min(ch(i+1,j,1,w),me(j+1,h,1,w)));
    r=max(r,e);
    e=min(ch(1,i,1,w),min(me(i+1,j,1,w),me(j+1,h,1,w)));
    r=max(r,e);
    }
    }
     
     
     
    for(int i=1;i<h;i++){
    for(int j=1;j<w;j++){
    e=min(ch(1,h,1,i),min(me(1,j,i+1,w),me(j+1,h,i+1,w)));
    r=max(r,e);
    e=min(me(1,h,1,i),min(ch(1,j,i+1,w),me(j+1,h,i+1,w)));
    r=max(r,e);
    e=min(me(1,h,1,i),min(me(1,j,i+1,w),ch(j+1,h,i+1,w)));
    r=max(r,e);
     
    e=min(ch(1,j,1,i),min(me(j+1,h,1,i),me(1,h,i+1,w)));
    r=max(r,e);
    e=min(me(1,j,1,i),min(ch(j+1,h,1,i),me(1,h,i+1,w)));
    r=max(r,e);
    e=min(me(1,j,1,i),min(me(j+1,h,1,i),ch(1,h,i+1,w)));
    r=max(r,e);
    }
    }
     
     
    for(int i=1;i<w;i++){
    for(int j=i;j<w;j++){
    e=min(me(1,h,1,i),min(me(1,h,i+1,j),ch(1,h,j+1,w)));
    r=max(r,e);
    e=min(ch(1,h,1,i),min(me(1,h,i+1,j),me(1,h,j+1,w)));
    r=max(r,e);
    e=min(me(1,h,1,i),min(ch(1,h,i+1,j),me(1,h,j+1,w)));
    r=max(r,e);
    }
    }
     
     
    for(int i=1;i<h;i++){
    for(int j=1;j<w;j++){
    e=min(ch(1,i,1,w),min(me(i+1,h,1,j),me(i+1,h,j+1,w)));
    r=max(r,e);
    e=min(me(1,i,1,w),min(me(i+1,h,1,j),ch(i+1,h,j+1,w)));
    r=max(r,e);
    e=min(me(1,i,1,w),min(ch(i+1,h,1,j),me(i+1,h,j+1,w)));
    r=max(r,e);
     
    e=min(ch(1,i,1,j),min(me(1,i,j+1,w),me(i+1,h,1,w)));
    r=max(r,e);
    e=min(me(1,i,1,j),min(ch(1,i,j+1,w),me(i+1,h,1,w)));
    r=max(r,e);
    e=min(me(1,i,1,j),min(me(1,i,j+1,w),ch(i+1,h,1,w)));
    r=max(r,e);
     
     
    }
    }
     
     
    cout<<r<<endl;
    }
     
     
        return 0;
    }

Measured memory_bytes: 3444