#include<iostream>
using namespace std;
int path[10];
bool vis[10];
int n;
void dfs(int x){
if(x>n){
for(int i=1;i<=n;i++){
cout<<" "<<path[i];
}
cout<<'\n';
return ;
}
else{
for(int i=1;i<=n;i++){
if(!vis[i]){
vis[i]=1;
path[x]=i;
dfs(x+1);
vis[i]=0;
path[x]=0;
}
}
}
}
int main(){
cin>>n;
dfs(1);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
do{
cout<<s<<endl;
}while(next_permutation(s.begin(),s.end()));
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n,m;
bool f;
bool vis[11][11];
char s[11][11];
int dir[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
bool in(int x,int y){
return 0<=x && x<n && 0<=y && y<m;
}
void dfs(int x,int y){
vis[x][y]=1;
if(s[x][y]=='T'){
f=true;
return ;
}
for(int i=0;i<4;i++){
int tx=x+dir[i][0];
int ty=y+dir[i][1];
if(in(tx,ty)&&!vis[tx][ty]&&s[tx][ty]!='*'){
dfs(tx,ty);
}
}
return ;
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>s[i];
}
int x,y;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(s[i][j]=='S') {
x=i;
y=j;
}
}
}
dfs(x,y);
if(f){
cout<<"yes";
}else{
cout<<"no";
}
return 0;
}
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=11;
int vis[maxn][maxn];
char a[maxn][maxn];
int n,m;
int sx,sy,fx,fy;
int flag;
int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
int pd(int x,int y)
{
if(x>=1&&x<=n&&y>=1&&y<=m&&vis[x][y]==0&&a[x][y]!='*')
return true;
else
return false;
}
void dfs(int x,int y,int bs)
{
if(bs>=flag)
return ;
if(x==fx&&y==fy)
{
flag=bs;
return ;
}
vis[x][y]=1;
for(int i=0;i<4;i++)
{
int nx=x+dir[i][0];
int ny=y+dir[i][1];
if(pd(nx,ny))
{
dfs(nx,ny,bs+1);
}
}
vis[x][y]=0;
}
int main()
{
flag=99999;
memset(vis,0,sizeof(vis));
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
if(a[i][j]=='S')
{
sx=i;
sy=j;
}
if(a[i][j]=='T')
{
fx=i;
fy=j;
}
}
}
dfs(sx,sy,0);
if(flag!=99999)
cout<<flag;
else
cout<<-1;
}