#include <fstream>
const int NMAX = 1005;
const int inf = 0x3f3f3f3f;
using namespace std;
ifstream f("ferma2.in");
ofstream g("ferma2.out");
int N,K,ferma[NMAX][NMAX],summin,sum,total,tr[NMAX][NMAX],x,y;
int triunghi(int x, int y)
{
int sum = 0;
for (int i = x; i < x+N-K; ++i)
{
for (int j = y; j <= y+i-x; ++j)
{
sum += ferma[i][j];
}
}
return sum;
}
int main()
{
f >> N >> K;
for (int i = 1; i <= N; ++i)
{
for (int j = 1; j <= i; ++j)
{
f >> ferma[i][j];
total += ferma[i][j];
}
}
tr[1][1] = triunghi(1,1);
summin = tr[1][1];
for (int i = 2; i+N-K <= N+1; ++i)
{
for (int j = 1; j <= i; ++j)
{
//triunghi(i,j);
x = i;
y = j;
if (j == 1)
{
tr[i][j] = tr[i-1][j];
for (int ii = x; ii < x+N-K; ++ii)
{
tr[i][j] -= ferma[ii-1][ii-x+1];
}
for (int jj = 1; jj <= N-K; ++jj)
{
tr[i][j] += ferma[x+N-K-1][jj];
}
}
else
{
tr[i][j] = tr[i][j-1];
for (int ii = x; ii < x+N-K; ++ii)
{
tr[i][j] += ferma[ii][y+ii-x];
}
for (int jj = x; jj < x+N-K; ++jj)
{
tr[i][j] -= ferma[jj][y-1];
}
}
if (tr[i][j] < summin)
summin = tr[i][j];
}
}
g << total - summin;
f.close();
g.close();
return 0;
}