#include<bits/stdc++.h>
using namespace std;
stack<int> s;
int n ,x= 0,y=0,t,a[100]={0},b[100]={0};
void f(int k,int xx,int yy){
if(k>2*n){
for(int i=1;i<=n;i++){cout<<b[i]<<" ";
}
cout<<endl;
return ;
}
if(s.size()>0){
b[yy]=s.top();
yy++;
s.pop();
f(k+1,xx,yy);
yy--;
s.push(b[yy]);
}
if(xx<=n){
s.push(a[xx]);
xx++;
f(k+1,xx,yy);
s.pop();
xx--;
}
}
int main(){
cin>>n;
x=1;y=1;
for(int i=1;i<=n;i++)a[i]=i;
f(1,x,y);
return 0;
}
( ) |