#include <bits/stdc++.h>
using namespace std;

const int MAXN = 250 + 7; // maksymalne wymiary talibcy

int tab[MAXN][MAXN]; // tablica z wejscia
int pref[MAXN][MAXN]; // sumy prefiksowe, pref[i][j] = suma na prostokacie od (1, 1) do (i, j)

// poniewaz tablice sa zadeklarowane globalnie (a nie w main), sa one wypelnione zerami!

int suma(int i1, int j1, int i2, int j2) // suma na prost. lewy gorny - (i1, j1), prawy dolny - (i2, j2)
{
	return pref[i2][j2] - pref[i1 - 1][j2] - pref[i2][j1 - 1] + pref[i1 - 1][j1 - 1];
}

int main()
{
	ios_base::sync_with_stdio(0), cin.tie(0);

	int n, r;
	cin >> n >> r; // odpowiednio: rozmiar tablicy i promien
	for(int i = 1; i <= n; i++)
	{
		for(int j = 1; j <= n; j++)
		{
			cin >> tab[i][j];
			// wczytujemy zaczynajac od i = 1, j = 1
		}
	}

	for(int i = 1; i <= n; i++)
	{
		for(int j = 1; j <= n; j++)
		{
			pref[i][j] = pref[i - 1][j] + pref[i][j - 1] - pref[i - 1][j - 1] + tab[i][j];
			// poniewaz wczytywalismy od indeksu 1 (a nie 0), nie musimy sie martwic o to,
			// ze wyjdziemy poza tablice - na indeksie 0 sa zera
		}
	}

	for(int i = 1; i <= n; i++)
	{
		for(int j = 1; j <= n; j++)
		{
			cout << suma(max(1, i - r), max(1, j - r), min(n, i + r), min(n, j + r)) << ' ';
			// max i min sa po to, aby nie wychodzic poza tablice
		}
		cout << '\n';
	}
	return 0;
}