using　namespace　std;struct　node　{　int　v,　s,　sz,　w,　rv;　node　*ls,　*rs;　inline　void　update()　{　sz　=　1;　s　=　v;　if　(ls)　{　sz　+=　ls->　sz;　s　+=　ls->　s;　}　if　(rs)　{　sz　+=　rs->　sz;　s　+=　rs->　s;　}　}　inline　void　fix()　{　if　(rv)　{　swap(ls,　rs);　if　(ls)　ls->　rv　^=　1;　if　(rs)　rs->　rv　^=　1;　rv　=　0;　}　}};typedef　pair　　npr;const　int　maxn　=　80009;#define　szof(p)　((p)?(p->sz):0)#define　sof(p)　((p)?(p->s):0)node　nlst[maxn　　ls　=　np->　rs　=　0;　np->　v　=　np->　s　=　v;　np->　sz　=　1;　np->　rv　=　0;#ifdef　WIN32　np->　w　=　(rand()　　w　=　rand();#endif　return　np　++;}node*　merge(node*　p,　node*　q)　{　if　(p)　p->　fix();　else　return　q;　if　(q)　q->　fix();　else　return　p;　if　(p->　w　>　q->　w)　{　p->　rs　=　merge(p->　rs,　q);　p->　update();　return　p;　}　else　{　q->　ls　=　merge(p,　q->　ls);　q->　update();　return　q;　}}npr　split(node*　p,　int　k)　{　if　(!k)　return　npr(0,　p);　else　if　(!p　||　p->　sz　==　k)　return　npr(p,　0);　else　{　p->　fix();　if　(k　　ls))　{　npr　g(split(p->　ls,　k));　p->　ls　=　g.　second;　p->　update();　return　npr(g.　first,　p);　}　else　{　npr　g(sp