#include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<set> using namespace std; int n,ox,oy,m[50][50]; struct per { int x,y; }a[50]; set< vector <int> >V; pair<int,int>h[50]; long long ras,cate,r[20]; const int dx[4]={0,1,0,-1}; const int dy[4]={1,0,-1,0}; void bck(int k,int i,int j) { if(k==n-1) { int minx=ox; int miny=oy; for(int i=0;i<n;i++) { if(minx>a[i].x)minx=a[i].x; if(miny>a[i].y)miny=a[i].y; } for(int i=0;i<n;i++) h[i]=make_pair(a[i].x-minx,a[i].y-miny); sort(h,h+n); vector <int >curr; for(int i=0;i<n;i++) { curr.push_back(h[i].first); curr.push_back(h[i].second); } set < vector < int > > :: iterator it = V.find (curr); if(it==V.end()) { ras++; V.insert(curr); } return ; } int nx,ny; for(int o=0;o<4;o++) { nx=i+dx[o]; ny=j+dy[o]; if(m[nx][ny]==0) { m[nx][ny]=1; a[k+1].x=nx; a[k+1].y=ny; bck(k+1,nx,ny); m[nx][ny]=0; } } } int main() { //freopen("input","r",stdin); //freopen("output","w",stdout); scanf("%d",&n); /*for(n=1;n<=13;n++) { ras=0; ox=15; oy=15; a[0].x=ox; a[0].y=oy; m[ox][oy]=1; bck(0,ox,oy); V.clear(); printf("ras[%d]=%d;\n",n,ras); }*/ r[1]=1; r[2]=2; r[3]=6; r[4]=15; r[5]=42; r[6]=112; r[7]=308; r[8]=825; r[9]=2255; r[10]=6026; r[11]=16386; r[12]=43700; r[13]=118334; printf("%lld",r[n]); return 0; }