import strutils, sequtils var n, m: int l, r: seq[int] N: int G1, G2: seq[seq[int]] visited: seq[bool] cmp: seq[int] stk: seq[int] proc nya(v: int) = visited[v] = true for vv in G1[v]: if visited[vv]: continue nya(vv) stk.add(v) proc nyaa(v, cnt: int) = visited[v] = true for vv in G2[v]: if visited[vv]: continue nyaa(vv, cnt) cmp[v] = cnt proc scc(): int = visited = newSeqWith(N, false) cmp = newSeqWith(N, 0) stk = newSeq[int](0) for v in 0.. 0: var v = stk.pop if visited[v]: continue nyaa(v, result) result += 1 proc rev(x: int): int = result = m-x-1 proc add_edge(v0, v1: int) = G1[v0].add(v1) G2[v1].add(v0) proc add_edges(i, j: int) = add_edge(i, j) var x = if i>=n: i-n else: i+n y = if j>=n: j-n else: j+n add_edge(y, x) ### var nm = stdin.readLine.split n = nm[0].parseInt m = nm[1].parseInt l = newSeqWith(n, 0) r = newSeqWith(n, 0) for i in 0..