#include <bits/stdc++.h>
using namespace std;
void f(vector<int>& v, vector<vector<int>>& ans,map<int,int> mp, vector<int>& temp,int idx, int n){
if(temp.size()>=n){
for(int i=0;i<temp.size();i++)
cout<<temp[i]<<" ";
cout<<endl;
ans.push_back(temp);
return;
}
for(int i=0;i<n;i++){
if(mp.find(i)==mp.end()){
temp.push_back(v[i]);
mp[i]++;
f(v,ans,mp,temp,0,n);
temp.pop_back();
mp[i]--;
}
}
}
int main() {
// your c
vector<int>v= {3,1,2,1};
vector<vector<int>>ans;
map<int,int>mp;
vector<int> temp; int n=v.size();
f(v,ans,mp,temp,0,n);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZvaWQgZih2ZWN0b3I8aW50PiYgdiwgdmVjdG9yPHZlY3RvcjxpbnQ+PiYgYW5zLG1hcDxpbnQsaW50PiBtcCwgdmVjdG9yPGludD4mIHRlbXAsaW50IGlkeCwgaW50IG4pewoJaWYodGVtcC5zaXplKCk+PW4pewoJCWZvcihpbnQgaT0wO2k8dGVtcC5zaXplKCk7aSsrKQoJCWNvdXQ8PHRlbXBbaV08PCIgIjsKCQljb3V0PDxlbmRsOwoJCQoJCWFucy5wdXNoX2JhY2sodGVtcCk7CgkJIHJldHVybjsKCX0KCWZvcihpbnQgaT0wO2k8bjtpKyspewoJCWlmKG1wLmZpbmQoaSk9PW1wLmVuZCgpKXsKCQl0ZW1wLnB1c2hfYmFjayh2W2ldKTsKCQltcFtpXSsrOwoJCWYodixhbnMsbXAsdGVtcCwwLG4pOwoJCXRlbXAucG9wX2JhY2soKTsKCQltcFtpXS0tOwoJCX0KCX0KfQppbnQgbWFpbigpIHsKCS8vIHlvdXIgYwoJdmVjdG9yPGludD52PSB7MywxLDIsMX07Cgl2ZWN0b3I8dmVjdG9yPGludD4+YW5zOwoJbWFwPGludCxpbnQ+bXA7Cgl2ZWN0b3I8aW50PiB0ZW1wOyBpbnQgbj12LnNpemUoKTsKCWYodixhbnMsbXAsdGVtcCwwLG4pOwp9