题目描述
Dexter 新开了一间实验室,想对小鼠进行一系列实验。在实验室中有 N 只小鼠,它们围成一个圆圈,并按顺序编号为 0 到 N−1。
Dexter 依次进行 M 次实验。对于每一次实验,参与第 i 次实验的小鼠总是圆上的一个连续区间,用一对数 (Si,Fi) 表示:
- 如果 Si≤Fi,则编号为
Si,Si+1,…,Fi
的小鼠参与第 i 次实验;
- 如果 Si>Fi,则编号为
Si,Si+1,…,N−2,N−1,0,…,Fi
的小鼠参与第 i 次实验。
任务
在每一步,Dexter 都想知道有多少只小鼠参加了到目前为止的所有实验。
换句话说,在完成第 i 次实验后,需要求出同时参加了实验 1,2,…,i 的小鼠数量。
输入格式
第一行包含两个整数 N,M。
接下来 M 行,每行包含两个整数 Ai,Bi。它们按如下方式确定真正的区间端点 Si,Fi:
Si=Ai,Fi=Bi.
- 如果 i>1,记 Ri−1 为第 i−1 次实验后的答案,则
Si=(Ri−1+Ai)modN,
Fi=(Ri−1+Bi)modN.
输出格式
应包含 M 行。
第 i 行输出一个整数,表示参加了实验 1,2,…,i 的小鼠数量。
数据范围与限制
- 1≤N≤1000000000;
- 1≤M≤100000;
- 0≤Ai,Bi<N。
子任务
| 子任务 |
分值 |
限制 |
| 1 |
18 |
对所有 1≤i≤M,都有 Ai≤Bi |
| 2 |
20 |
1≤N,M≤1000 |
| 3 |
22 |
1≤N≤100000, 1≤M≤1000 |
| 4 |
20 |
1≤N,M≤100000 |
| 5 |
无额外限制 |
样例
样例 1
输入
5 3
1 4
3 0
2 0
输出
4
3
2
解释
对于第一次实验,S1=1,F1=4,参与的小鼠为 1,2,3,4,所以 R1=4。
对于第二次实验,
S2=(3+4)mod5=2,
F2=(0+4)mod5=4.
同时参加前两次实验的小鼠为 2,3,4,所以 R2=3。
对于第三次实验,
S3=(2+3)mod5=0,
F3=(0+3)mod5=3.
同时参加前三次实验的小鼠为 2,3,所以 R3=2。
样例 2
输入
6 2
4 1
2 5
输出
4
2
解释
对于第一次实验,S1=4,F1=1,参与的小鼠为 0,1,4,5,所以 R1=4。
对于第二次实验,
S2=(2+4)mod6=0,
F2=(5+4)mod6=3.
同时参加前两次实验的小鼠为 0,1,所以 R2=2。