#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <string>
#include <bitset>
#include <cstdio>
#include <limits>
#include <vector>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <fstream>
#include <numeric>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <unordered_map>

using namespace std;
int fix[25][25],ans[25][25],m[10000],x[10000],y[10000],px[91][91],py[91][91],ans10=0;
int a[25][25];
int n,r=1;
void go(int x,int y)
{
   ans10++;
   if(x==0 && y==0){a[x][y]=1;return;}
   a[x][y]=1;
   go(px[x][y],py[x][y]);

}
int main(){
    int n;
    cin >> n;
   
for(int i=1;i<n;i++)
{
    
    for(int j=1;j<n;j++)
    
    {
     r=1;
     fix[0][0] = 1;
    x[0]=0;
        y[0]=0;
        m[0]=0;
     int dx[8]={i,-i,-i,i,j,j,-j,-j},dy[8]={j,j,-j,-j,i,-i,-i,i};

    
    for(int i=0;i<r;i++)
    {
	
        
        if(x[i]==n-1 && y[i]==n-1)
	 break;
	

	 for(int j=0;j<8;j++)
	if(x[i]+dx[j]<n &&  y[i]+dy[j]<n && x[i]+dx[j]>=0 &&  y[i]+dy[j]>=0 && fix[x[i]+dx[j]][y[i]+dy[j]]==0)
	{
		
		fix[x[i]+dx[j]][y[i]+dy[j]]=1;
		m[r]=m[i]+1;
         
		x[r]=x[i]+dx[j];
		y[r]=y[i]+dy[j];
         
		px[x[i]+dx[j]][y[i]+dy[j]]=x[i];
		py[x[i]+dx[j]][y[i]+dy[j]]=y[i];
		r++;
	
 }
}


    
if(fix[n-1][n-1]==1)
go(px[n-1][n-1],py[n-1][n-1]);
        
      if(fix[n-1][n-1]!=1)
        cout<<"-1"<<" ";
     else
       cout<<ans10<<" ";

ans10=0;

    for(int i1=0;i1<25;i1++)
        for(int j1=0;j1<25;j1++)
        a[i1][j1]=0,fix[i1][j1]=0;
    
    for(int i1=0;i1<91;i1++)
        for(int j1=0;j1<91;j1++)
    px[i1][j1]=0,py[i1][j1]=0;
    
    for(int i1=0;i1<10000;i1++)
        m[i1]=0,x[i1]=0,y[i1]=0;
    
    }cout<<endl;}
    return 0;
}