#include <iostream>
#include<vector>
using namespace std;

const int dx[]={-2,2,2,-2,-1,1,1,-1};
const int dy[]={1,1,-1,-1,2,2,-2,-2};

bool check(int x,int y,vector<vector<int>> board,int n){
    return (x>=0 && y>=0 && x<n && y<n && board[x][y]==-1);
}
bool solve(int x,int y,int move,vector<vector<int>> &board,int n){
    if(move==(n*n)){
        return true;
    }
    for(int i=0;i<8;i++){
        int next_x=x+dx[i];
        int next_y=y+dy[i];
        if(check(next_x,next_y,board,n)){
            board[next_x][next_y]=move;
            if(solve(next_x,next_y,move+1,board,n)){
                return true;
            }
            board[next_x][next_y]=-1;
        }
    }
    return false;
}
int main() {
    int n=6;
    vector<vector<int>> board(n,vector<int>(n,-1));
    board[0][0]=0;
    solve(0,0,1,board,n);
    
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cout<<board[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}