#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
int ans=0,a[100001],b[100001],r,n;
void out(){
ans++;
for(int i=1;i<=r;i++)
printf("%d ",a[i]);
printf("\n");
}
void search(int i){
for(int j=1;j<=n;j++){
if(b[j])continue;
b[j]=1;a[i]=j;
if(i<r)search(i+1);
else out();
b[j]=0;
}
}
int main(){
scanf("%d",&n);r=n;
search(1);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
int ans=0,a[100001],b[100001],r,n;
void out(){
ans++;
for(int i=1;i<=r;i++)
printf("%d ",a[i]);
printf("\n");
}
void search(int i,int syc){
for(int j=syc+1;j<=n;j++){
if(b[j])continue;
b[j]=1;a[i]=j;
if(i<r)search(i+1,j);
else out();
b[j]=0;
}
}
int main(){
scanf("%d%d",&n,&r);
search(1,0);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int n,ans,a[100001],c[100001],d[100001],b[100001];
void out(){
ans++;
printf("%d:",ans);
for(int i=1;i<=n;i++)
printf("%d ",a[i]);
printf("\n");
}
void search(int i){
for(int j=1;j<=n;j++){
if(b[j] || c[i+j] || d[i-j+7])continue;
a[i]=j;b[j]=1;c[i+j]=1;d[i-j+7]=1;
if(i<n)search(i+1);
else out();
b[j]=0;c[i+j]=0;d[i-j+7]=0;
}
}
int main(){
scanf("%d",&n);
search(1);
if(ans==0){
printf("no solute!\n");return 0;
}
printf("total=%d\n",ans);
return 0;
}