問題文
整数 N と M 個の整数の組 (a1,b1),(a2,b2),dots,(aM,bM) があります。各 ai,bi は 1leqailtbileqN を満たします。
はじめ、あなたは (1,2,dots,N) の順列を N! 種類すべて持っています。
あなたは M 回の操作を行います。i 回目の操作は次の通りです。
- 持っている N! 個の順列すべてに対して次の処理を行う。
- 順列の ai 番目の要素と bi 番目の要素の値を比較して、前者の方が大きければ両者を swap する。
1leqileqM について、i 回目の操作を終了した時点で持っている順列のうち昇順にソートされている列の個数を Si とします。
S1,S2,dots,SM を出力してください。
ただし、入力では (ai,bi) の代わりに整数の組 (xi,yi) が与えられます。
(ai,bi) の値は xi,yi,Si−1 を用いて次の手順で得ることができます。(便宜上 S0=1 とします。)
- ci=((xi+Si−1)bmodN)+1 とする。
- di=((yi+Si−1times2)bmodN)+1 とする。(ここで cineqdi が保証される。)
- ai=min(ci,di) とする。
- bi=max(ci,di) とする。
制約
- 2leqNleq15
- 1leqMleq5times105
- 1leqailtbileqN
- 0leqxi,yileqN−1
入力
入力は以下の形式で標準入力から与えられる。
N M
x1 y1
x2 y2
vdots
xM yM
出力
M 行出力せよ。i 行目には Si を出力せよ。
入力例 1
2 1
1 1
出力例 1
2
はじめ、持っている順列は (1,2) と (2,1) です。
(a1,b1)=(1,2) です。1 回目の操作を終了した時点で持っている順列は (1,2) が 2 個になります。よって 2 を出力します。
入力例 2
3 4
0 1
2 1
1 1
0 1
出力例 2
2
4
4
6
(ai,bi) は順に (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) は順に (1,2),(3,4),(1,5),(2,3),(4,5) です。