#include using namespace std; #define ALL(x) x.begin(),x.end() #define rep(i,n) for(int i=0;i<(n);i++) #define debug(v) cout<<#v<<":";for(auto x:v){cout<bool chmax(T &a,const T &b){if(abool chmin(T &a,const T &b){if(b>n>>p>>q;p--,q--; vector a(n); rep(i,n){ cin>>a[i];a[i]--; } if(!next_permutation(ALL(a))){ cout<<-1< ans(n); bool f=true;//答え作れますフラグ // qより前すべて一致 { set st;rep(i,n)st.insert(i); rep(i,qi){ ans[i]=a[i]; st.erase(ans[i]); } auto ite=st.lower_bound(q+1); if(ite==st.end()) f=false; if(f) st.erase(ite); ans[qi]=*ite; bool pPlaced=false; if(ans[qi]==p) pPlaced=true; for(int i=qi+1;iqだけ満たすように配置 if(!f){ set st;rep(i,n)st.insert(i); rep(i,qi){ ans[i]=a[i]; st.erase(ans[i]); } if(!next_permutation(ans.begin(),ans.begin()+qi)){ cout<<-1<