Mo = object width*: int N, Q: int qli: seq[seq[int]] size: int
CPLIB_UTILS_MO = 1
proc initMo(N, Q: int; width = max(1, int( 1.0 * float(N) / max(1.0, sqrt(float(Q) * 2.0 / 3.0))))): Mo {....raises: [], tags: [].}
proc insert(self: var Mo; l, r: int) {....raises: [], tags: [].}
proc run[AL, AR, DL, DR, REM](self: var Mo; add_left: AL; add_right: AR; delete_left: DL; delete_right: DR; rem: REM)