#include<bits/stdc++.h>
using namespace std;
int a[9];      // 存当前排列
int v[9];      // 标记数字是否用过
//dfs(x)表示现在正在填第x个位置
void dfs(int x){
    // 8个位置全部填完
    if(x>8){
        // 输出当前排列
        for(int i=1;i<=8;i++){
            cout<<a[i]<<" ";
        }
        cout<<endl;
        return;
    }
    // 枚举当前位放哪个数字
    for(int i=1;i<=8;i++){
        // 没用过才能放
        if(v[i]==0){
            a[x]=i;     // 第x位放i
            v[i]=1;     // 标记i已经用过
            dfs(x+1);   // 去填下一位
            v[i]=0;     // 回溯:撤销使用
        }
    }
}
int main(){
    dfs(1);
    return 0;
}