import sequtils,strutils,math,algorithm type binaryIndexTree[I:static[int]] = array[I + 1,int] proc add(BIT :var binaryIndexTree,i : int, a : int)= var index = i while BIT[0] >= index: BIT[index] += a index += ((index xor (index - 1)) and index) proc sum(BIT : binaryIndexTree, i : int):int = var index = i while index > 0: result += BIT[index] index = (index and (index - 1)) proc scanf(frmt: cstring) {.varargs, importc, header: "".} type item = tuple[index, size : int] var N = stdin.readline.parseInt T : array[1000_001, int] A = newSeq[item](N) for n in 0.. 0: ans += BIT.sum(t - 1) * (S[t - 1] - BIT.sum(t - 1)) ans -= SBIT.sum(t - 1) if t < i: ans += (BIT.sum(i) - BIT.sum(t)) * (S[i] - S[t] - BIT.sum(i) + BIT.sum(t)) ans -= (SBIT.sum(i) - SBIT.sum(t)) BIT.add(t, 1) echo ans