#include <bits/stdc++.h>
using namespace std;

int cnt= 0;
int n ;
int dx[]={1,2,1,2,-1,-2,-1,-2};
int dy[]={2,1,-2,-1,2,1,-2,-1};

bool check(int i ,int j,vector<vector<int>>&b){
	if(i<0||j<0||j>=n||i>=n||b[i][j]!=-1){
		return false;
	}
	return true;
}
void solve(int x,int y , vector<vector<int>>&b,int e){

	if(e == n*n){
		cnt++;
		
		for(int i = 0 ; i < n ;i++){
			for(int j = 0;j < n ;j++){
				cout<<b[i][j]<<" ";
			}
			cout<<endl;
		}
		cout<<endl;
		return;
	}
   for(int i = 0;i<8;i++){
   	 int xr = x + dx[i];
   	 int xc = y + dy[i];
   	 
   	 if(check(xr,xc,b)){
   	 	b[xr][xc] = e;
   	 	solve(xr,xc,b,e+1);
   	 	b[xr][xc] = -1;
   	 }
   }
}

int main() {
	cin>>n;
	vector<vector<int>>b(n,vector<int>(n,-1));

    b[0][0] = 0;
    solve(0,0,b,1);
    if(cnt == 0)cout<<"no soln";
    else cout<<"soln"<<cnt<<endl;
	return 0;
}