#include using namespace std; #include using namespace atcoder; using ll = long long; const ll INF = 1e18; const ll ID = 1e18; ll op(ll a, ll b){ return max(a, b); } ll e(){ return -INF; } ll mapping(ll f, ll x){ if(f==ID) return x; return f; } ll composition(ll f, ll g){ if(f==ID) return g; return f; } ll id(){ return ID; } int N; vector A; void solve(){ map> mpv; for(int i = 0;i seg(A); for(auto [k, v]: mpv){ vector idx; for(auto i: v){ idx.push_back(i); } sort(idx.begin(), idx.end()); if(idx.empty())continue; seg.apply(idx[0], idx.back()+1, k); } for(int i = 0;i> N; A.resize(N); for(int i=0; i> A[i]; solve(); }