//C++ STL中提供了库函数next_permutation
//求排列
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
//cout << "Hello world!" << endl;
freopen("input.txt","r",stdin);
int n,p[10];
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&p[i]);
sort(p,p+n);//排序,得到p的最小排列
do
{
for(int i=0;i<n;i++)
cout<<p[i]<<" ";//输出排列p
cout<<endl;
}while(next_permutation(p,p+n));//求下一个排列
fclose(stdin);
return 0;
}
//求排列
//
#include <iostream>
#include <fstream>
using namespace std;
void print_permutation(int n,int* A,int cur)
{
int i,j;
if(cur==n)//递归边界
{
for(i=0;i<n;i++)
cout<<A[i]<<" ";
cout<<endl;
}
else
{
//尝试在A[cur]中填各种整数i
for(i=1;i<=n;i++)
{
int ok=1;
for(j=0;j<cur;j++)
if(A[j]==i)ok=0;//如果i已经在A[0]~A[cur-1]出现过,则不能再选
if(ok)
{
A[cur]=i;
print_permutation(n,A,cur+1);//递归调用
}
}
}
}
int main()
{
//cout << "Hello world!" << endl;
freopen("input.txt","r",stdin);
int Arr[10];
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>Arr[i];
print_permutation(n,Arr,0);
fclose(stdin);
return 0;
}