Medium Accuracy: 18.26% Submissions: 3798 Points: 4

A Maze is given as N*N binary matrix of blocks where source block is the upper left most block i.e., maze[0][0] and destination block is lower rightmost block i.e., maze[N-1][N-1]. A rat starts from source and has to reach the destination. The rat can move in only two directions: first forward if possible or down. If multiple solutions exist, the shortest earliest hop will be accepted. For the same hop distance at any point, forward will be preferred over downward.
In the maze matrix, 0 means the block is the dead end and non-zero number means the block can be used in the path from source to destination. The non-zero value of mat[i][j] indicates number of maximum jumps rat can make from cell mat[i][j].
In this variation, Rat is allowed to jump multiple steps at a time instead of 1.

Input:
The first line of input contains an integer T denoting the number of test cases. For each test case, the first line contains an integer n denoting the size of the square matrix followed by N*N space-separated values of the matrix m where 0's represents blocked paths and any number represents valid paths.

Output:
For each test case, the output is a matrix containing 1 for the path taken and 0 for not chosen path. If no path exists print -1.

Constraints:
1 <= T <= 50
2 <= n <= 10
0 <= m[i][j] <= 5

Explanation:
Testcase 1: Rat started with m[0][0] and can jump up to 2 steps right/down. First check m[0][1] as it is 1, next check m[0][2], this won't lead to the solution. Then check m[1][0], as this is 3(non-zero), so we can make 3 jumps to reach m[1][3]. From m[1][3] we can move downwards taking 1 jump each time to reach destination at m[3][3].