#include using namespace std; vector> results; void backtrack(vector& current, vector& used, int n){ if(current.size() == n){ results.push_back(current); return; } for(int i = 1; i <= n; i++){ if(!used[i]){ current.push_back(i); used[i] = true; backtrack(current, used, n); current.pop_back(); used[i] = false; } } } int main(){ int n; cin >> n; vector current; vector used(n+1, false); backtrack(current, used, n); for(const auto& perm:results){ for(int num:perm){ cout << num << " "; } cout << endl; } return 0; }