#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x3F3F3F3F
#define pl putchar('\n')
#define rep(i,l,r) for(int (i)=(l);(i)<=(r);(i)++)
#define per(i,r,l) for(int (i)=(r);(i)>=(l);(i)--)
const int N=1505;
int n,m,k;
int s[N][N];
int a[N][N];
int lu[N][N],ld[N][N],ru[N][N],rd[N][N];
int row[N][N],col[N][N];
int main(){
cin>>n>>m>>k;
rep(i,1,n){
rep(j,1,m){
int x;
cin>>x;
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+x;
}
}
rep(i,k,n){
rep(j,k,m){
a[i][j]=s[i][j]-s[i-k][j]-s[i][j-k]+s[i-k][j-k];
}
}
rep(i,1,n-k+1){
rep(j,1,m-k+1){
lu[i][j]=max(lu[i-1][j],max(lu[i][j-1],a[i][j]));
}
}
per(i,n,k){
rep(j,k,m){
ld[i][j]=max(ld[i+1][j],max(ld[i][j-1],a[i+k-1][j]));
}
}
rep(i,1,n-k+1){
per(j,m,k){
ru[i][j]=max(ru[i-1][j],max(ru[i][j+1],a[i][j+k-1]));
}
}
per(i,n-k+1,1){
per(j,m-k+1,1){
rd[i][j]=max(rd[i+1][j],max(rd[i][j+1],a[i+k-1][i+k-1]));
}
}
rep(i,1,n-k+1){
rep(j,k,m){
row[i][i+k-1]=max(row[i][i+k-1],a[i+k-1][j]);
}
}
rep(l,k+1,n){
rep(i,1,n-l+1){
row[i][i+l-1]=max(row[i+1][i+l-1],row[i][i+l-2]);
}
}
rep(j,1,m-k+1){
rep(i,k,n){
col[j][j+k-1]=max(col[j][j+k-1],a[i][j+k-1]);
}
}
rep(l,k+1,m){
rep(i,1,m-l+1){
col[i][i+l-1]=max(col[i+1][i+l-1],col[i][i+l-2]);
}
}
ll ans=0;
rep(i,1,n-k){
rep(j,1,m-k){
ans=max(ans,(ll)lu[i][j]+ru[i][j+1]+row[i+1][n]);
ans=max(ans,(ll)ld[i+1][j]+rd[i][j+1]+row[1][i]);
ans=max(ans,(ll)lu[i][j]+ld[i+1][j]+col[j+1][m]);
ans=max(ans,(ll)ru[i][j+1]+rd[i+1][j+1]+col[1][j]);
}
}
rep(i,1,n-2*k){
rep(j,i+k,n-k){
ans=max(ans,(ll)row[1][i]+row[i+1][j]+row[j+1][n]);
}
}
rep(i,1,m-2*k){
rep(j,i+k,m-k){
ans=max(ans,(ll)col[1][i]+col[i+1][j]+col[j+1][m]);
}
}
cout<<ans;
return 0;
}