#include #include #include using namespace atcoder; using mint = modint1000000007; using namespace std; #define rep(i,n) for(int i=0;i<(n);i++) #define Inf 1000000001 using P = pair; P op(P a,P b){ if(a.first==b.first){ return make_pair(a.first,a.second+b.second); } if(a.first>b.first)return a; return b; } P e(){ return make_pair(0,0); } int main(){ int n; cin>>n; vector p(n); rep(i,n){ cin>>p[i]; p[i]--; } segtree s0(n),s1(n); rep(i,n){ auto ret = s0.prod(0,p[i]); if(ret==e()){ ret.first = 1; ret.second = 1; } else ret.first++; s0.set(p[i],ret); } for(int i=n-1;i>=0;i--){ auto ret = s1.prod(p[i]+1,n); if(ret==e()){ ret.first = 1; ret.second = 1; } else ret.first++; s1.set(p[i],ret); } vector ans; rep(i,n){ auto r0 = s0.get(p[i]); auto r1 = s1.get(p[i]); r0.first += r1.first - 1; r0.second *= r1.second; if(s0.all_prod()==r0)ans.push_back(p[i]); } cout<