#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool check(int n,int row,int col,vector<vector<int>>maze,vector<vector<bool>>&visited){
    return(row>=0 && col>=0 && row<n && col<n && !visited[row][col] && maze[row][col]==1 );
}
bool ratinmaze(int n,int row,int col,vector<vector<int>>maze,vector<vector<bool>>&visited,vector<vector<int>>&result){
    if(row==n-1 && col==n-1){
        result[row][col]=1;
        return true;
    }
        visited[row][col]=true;
    result[row][col]=1;
    if(check(n,row+1,col,maze,visited)){
        ratinmaze(n,row+1,col,maze,visited,result);
        return true;
    }
    if(check(n,row-1,col,maze,visited)){
        ratinmaze(n,row-1,col,maze,visited,result);
        return true;
    }
    if(check(n,row,col+1,maze,visited)){
        ratinmaze(n,row,col+1,maze,visited,result);
        return true;
    }
    if(check(n,row,col-1,maze,visited)){
        ratinmaze(n,row,col-1,maze,visited,result);
        return true;
    }
    visited[row][col]=false;
    result[row][col]=0;
    return false;
}
int main(){
    int n;
    cin>>n;
    vector<vector<int>>maze(n,vector<int>(n));
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cin>>maze[i][j];
        }
    }
    vector<vector<bool>>visited(n,vector<bool>(n,false));
    vector<vector<int>>result(n,vector<int>(n));
    if(ratinmaze(n,0,0,maze,visited,visited)){
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
               cout<<result[i][j]<<" "
            }
        cout<<endl;
        }
    }else{
        cout<<-1;
    }
    return 0;
}