int n, tmp; structTree { int t[maxn], ans; Tree () { memset (t, 0, sizeof t); ans = 0; } inlineintlowbit(int x) { return x & -x; }
inlinevoidupdate(int x) { while (x <= n) { t[x] += 1; x += lowbit(x); } }
inlineintquery(int x) { intres(0); while (x) { res += t[x]; x -= lowbit(x); } return res; } } T[3];
inlineintread() { intx(0); charo(getchar()); while (o < '0' || o > '9') o = getchar(); for (; o >= '0' && o <= '9'; o = getchar()) x = (x << 1) + (x << 3) + (o ^ 48); return x; }