// Arup Guha
// 3/12/2019
// Solution to 2019 UCF HS Contest Problem: Blurry Sunshiny Day

import java.util.*;

public class blurry {

	public static int n;
	public static int k;
	public static int delta;
	public static int[][] data;
	
	public static void main(String[] args) {
		
		Scanner stdin = new Scanner(System.in);
		int numCases = stdin.nextInt();
		
		// Process each case.
		for (int loop=1; loop<=numCases; loop++) {
			
			// Get basic dimensions.
			n = stdin.nextInt();
			k = stdin.nextInt();
			delta = k/2;
			data = new int[n][n];
			
			// Read in grid.
			for (int i=0; i<n; i++)
				for (int j=0; j<n; j++)
					data[i][j] = stdin.nextInt();
				
			// Solve it.
			int[][] res = solve();
			
			// Output the result.
			System.out.println("Image #"+loop+":");
			StringBuilder sb = new StringBuilder();
			for (int i=0; i<n; i++) {
				for (int j=0; j<n-1; j++)
					sb.append(res[i][j]+" ");
				sb.append(res[i][n-1]+"\n");
			}
			System.out.println(sb);
		}
	}
	
	public static int[][] solve() {
		
		// Set up cumulative frequency array.
		int[][] cumfreq = new int[n+1][n+1];
		for (int i=1; i<=n; i++)
			for (int j=1; j<=n; j++)
				cumfreq[i][j] = data[i-1][j-1];
			
		// Calculate cumulative frequency array.
		for (int i=1; i<=n; i++) {
			for (int j=1; j<=n; j++) 
				cumfreq[i][j] += cumfreq[i][j-1];
			for (int j=1; j<=n; j++)
				cumfreq[i][j] += cumfreq[i-1][j];	
		}
		
		// Store result here.
		int[][] res = new int[n][n];
		for (int i=k; i<=n; i++) {
			for (int j=k; j<=n; j++) {
				
				// Get this sum in O(1) time.
				int sum = cumfreq[i][j] - cumfreq[i-k][j] - cumfreq[i][j-k] + cumfreq[i-k][j-k];
				
				// Use int division and mod to handle rounding.
				res[i-delta-1][j-delta-1] = sum/(k*k);
				if (sum%(k*k) >= (k*k+1)/2) res[i-delta-1][j-delta-1]++;
			}
		}
		
		// Ta da!
		return res;
	}
}