#include #include #include using namespace std; vector> result; void dfs(vector& path, vector& used, int n){ int js = 0; for(int i = 0; i < n; i++){ if(used[i] == false){ js++; used[i] = true; path.push_back(i); dfs(path, used, n); path.pop_back(); used[i] = false; } } if(js == 0){ result.push_back(path); return; } } int main(){ int n; cin >> n; vector path; vector used(n, false); dfs(path, used, n); for(auto x : result){ for(auto y: x){ cout << setw(5) << y + 1; } cout << endl; } }