#arc141e. [arc141_e]Sliding Edge on Torus

[arc141_e]Sliding Edge on Torus

题目描述

有一个无向图,有 N2N^2 个顶点。初始时,图中没有边。对于每一对满足 0i,j<N0 \leq i, j < N 的整数 (i,j)(i,j),图中有一个对应的顶点称为 (i,j)(i,j)

你将会得到 QQ 个查询,它们需要按顺序处理。第 ii 个查询给出四个整数 ai,bi,ci,dia_i, b_i, c_i, d_i,如下所示。

  • 对于每个 kk (0k<N)(0 \leq k < N),在两个顶点 ((ai+k)modN,(bi+k)modN)((a_i+k) \mod N, (b_i+k) \mod N)((ci+k)modN,(di+k)modN)((c_i+k) \mod N, (d_i+k) \mod N) 之间添加一条边。然后,打印图中当前连接组件的数量。

约束条件

  • 2N2×1052 \leq N \leq 2 \times 10^5
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • 0ai,bi,ci,di<N0 \leq a_i, b_i, c_i, d_i < N
  • (ai,bi)(ci,di)(a_i, b_i) \neq (c_i, d_i)
  • 输入中的所有值均为整数。

输入

输入以标准格式给出,格式如下:

NN QQ a1a_1 b1b_1 c1c_1 d1d_1 a2a_2 b2b_2 c2c_2 d2d_2 \vdots aQa_Q bQb_Q cQc_Q dQd_Q

输出

输出 QQ 行。第 ii 行应该包含图在第 ii 个查询时连接组件的数量。


示例输入 1

3 3
0 0 1 2
2 0 0 0
1 1 2 2

示例输出 1

6
4
4

第一个查询在 (0,0),(1,2)(0,0), (1,2)(1,1),(2,0)(1,1), (2,0)(2,2),(0,1)(2,2), (0,1) 之间添加了边,使得连接组件的数量从 9 变为 6。


示例输入 2

4 3
0 0 2 2
2 3 1 2
1 1 3 3

示例输出 2

14
11
11

查询后的图可能不是简单图。


示例输入 3

6 5
0 0 1 1
1 2 3 4
1 1 5 3
2 0 1 5
5 0 3 3

示例输出 3

31
27
21
21
19