#arc160f. [arc160_f]Count Sorted Arrays

[arc160_f]Count Sorted Arrays

题目描述

给定整数 NNMM,以及 MM 对整数:(a1,b1),(a2,b2),,(aM,bM)(a_1, b_1), (a_2, b_2), \dots, (a_M, b_M)。每对 (ai,bi)(a_i, b_i) 满足 1ai<biN1 \leq a_i < b_i \leq N

初始时,有 N!N! 种排列 (1,2,,N)(1,2,\dots,N)
你将进行 MM 个操作,第 ii 个操作如下。

  • 对于你的每一种排列,执行以下步骤:
    • 比较第 aia_i 个和第 bib_i 个元素。如果前者较大,则交换这两个元素。

对于每个 1iM1 \leq i \leq M,令 SiS_i 表示第 ii 个操作结束后,按升序排列的你的排列数。
输出 S1,S2,,SMS_1, S_2, \dots, S_M

输入中给出的是整数对 (xi,yi)(x_i, y_i),而不是 (ai,bi)(a_i, b_i)
可以根据 xix_iyiy_iSi1S_{i-1} 计算出 (ai,bi)(a_i, b_i) 的值。 (为了方便,取 S0=1S_0 = 1。)

  • ci=((xi+Si1)modN)+1c_i = ((x_i + S_{i-1}) \bmod N) + 1
  • di=((yi+Si1×2)modN)+1d_i = ((y_i + S_{i-1} \times 2) \bmod N) + 1。(这里保证 cidic_i \neq d_i。)
  • ai=min(ci,di)a_i = \min(c_i, d_i)
  • bi=max(ci,di)b_i = \max(c_i, d_i)

约束条件

  • 2N152 \leq N \leq 15
  • 1M5×1051 \leq M \leq 5 \times 10^5
  • 1ai<biN1 \leq a_i < b_i \leq N
  • 0xi,yiN10 \leq x_i, y_i \leq N - 1

输入

从标准输入读入数据,数据格式如下:

NN MM x1x_1 y1y_1 x2x_2 y2y_2 \vdots xMx_M yMy_M

输出

输出 MM 行,第 ii 行应包含 SiS_i

示例输入 1

2 1
1 1

示例输出 1

2

初始时有排列 (1,2)(1, 2)(2,1)(2, 1)
我们有 (a1,b1)=(1,2)(a_1, b_1) = (1, 2)。在第一个操作结束时,你有两个 (1,2)(1, 2) 的副本,所以应打印 22

示例输入 2

3 4
0 1
2 1
1 1
0 1

示例输出 2

2
4
4
6

按顺序,(ai,bi)(a_i, b_i)(1,2),(2,3),(1,3),(1,2)(1, 2), (2, 3), (1, 3), (1, 2)

示例输入 3

5 5
4 4
0 4
1 1
2 4
1 2

示例输出 3

2
4
4
8
16

按顺序,(ai,bi)(a_i, b_i)(1,2),(3,4),(1,5),(2,3),(4,5)(1, 2), (3, 4), (1, 5), (2, 3), (4, 5)