#include <iostream>
#include <algorithm>
using namespace std;
int a[505][505];
long long S[505][505];
int main(){
int n, m;
cin >> n >> m;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
cin >> a[i][j];
}
}
// 构建二维前缀和
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
S[i][j] = S[i-1][j] + S[i][j-1] - S[i-1][j-1] + a[i][j];
}
}
// 遍历所有 m×m 正方形左上角位置
long long ans = -1e18;
for(int i = 1; i + m - 1 <= n; i++){
for(int j = 1; j + m - 1 <= n; j++){
int x2 = i + m - 1, y2 = j + m - 1;
long long sum = S[x2][y2] - S[i-1][y2] - S[x2][j-1] + S[i-1][j-1];
ans = max(ans, sum);
}
}
cout << ans << endl;
return 0;
}