import java.util.*;
public class Main {
public static int size;
public static int[][] board;
public static boolean isInRow(int row, int num){
for(int i = 0; i < size; i++)
if(board[row][i] == num)
return true;
return false;
}
public static boolean isInCol(int col, int num){
for(int i = 0; i < size; i++)
if(board[i][col] == num)
return true;
return false;
}
public static boolean isInBlock(int row, int col, int num){
int r = row - row % 3;
int c = col - col % 3;
for(int i = r; i < r + 3; i++)
for(int j = c; j < c + 3; j++)
if(board[r][j] == num)
return true;
return false;
}
public static boolean isOk(int row, int col, int num){
return !isInRow(row, num) && !isInCol(col, num) && !isInBlock(row, col, num);
}
public static boolean solve(){
for(int row = 0; row < size; row++){
for(int col = 0; col < size; col++){
if(board[row][col] == 0){
for(int num = 1; num <= size; num++){
if(isOk(row,col,num)){
board[row][col] = num;
if(solve()){
return true;
}
else{
board[row][col] = 0;
}
}
}
return false;
}
}
}
return true;
}
public static void display(){
for(int i = 0; i < size; i++){
for(int j = 0; j < size; j++){
System.out.print(board[i][j] + " ");
}
System.out.println();
}
}
public static void main(String[] argc){
Scanner sc = new Scanner(System.in);
size = sc.nextInt();
board = new int[size][size];
for(int i = 0; i < size; i++)
for(int j = 0; j < size; j++)
board[i][j] = sc.nextInt();
if(solve()){
display();
}
}
}