#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000005 #define Inf64 1000000000000000001LL int op(int a,int b){ return max(a,b); } int e(){ return 0; } int mapping(int a,int b){ return a+b; } int composition(int a,int b){ return a+b; } int id(){ return 0; } int X; bool f(int x){ return x < X; } int main(){ int n; cin>>n; vector a(n); vector> is(n); rep(i,n){ cin>>a[i]; a[i]--; is[a[i]].push_back(i); } lazy_segtree seg(n); vector> qs(n); vector ans(n); { set s; rep(i,n){ s.insert(a[i]); seg.set(i,s.size()); qs[0].push_back(i); } } rep(i,n){ rep(j,qs[i].size()){ int id = qs[i][j]; ans[id]++; X = id + 2; int rr = seg.max_right(id); if(rr