#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <math.h>
#include <string.h>
#include <iostream>
#include <string>
#include <time.h>
#include <queue>
#include <list>
#include <map>
#include <set>
#include <vector>
#include <stack>
#include <bitset>
using namespace std;
const long long N=3e5+5;
int n,a[50],b[50],c[50],ans[50],sum;//a标记列,b,c标记对角线
void dfs(int i){
    int j;
    if(i>n){
        sum++;
        if(sum>3) return ;
        else {
            for(int m=1;m<n;m++){
                printf("%d ",ans[m]);
            }
            cout<<ans[n]<<endl;;
        }
    }
    for(j=1;j<=n;j++){
        if(a[j]==0 && b[i+j]==0 && c[i-j+n]==0 )
        {
            ans[i]=j;//标记
            a[j]=1;
            b[j+i]=1;
            c[i-j+n]=1;
            dfs(i+1);//搜索下一行
            a[j]=0;//回溯
            b[i+j]=0;
            c[i-j+n]=0;

        }
    }
}
int main()
{
    cin>>n;
    dfs(1);
    cout<<sum<<endl;
    return 0;
}