为了提升自己的剪纸技巧,Fran 想出了一个新的练习。他给自己准备了一条长度为 $n$ 厘米的纸条,当然,还有一把剪刀。他还邀请了 Lana 来协助他进行这个练习。
Lana 会给 Fran 发送 $k$ 个如下类型的指令:“在 $l$ 厘米处剪开第 $x$ 个纸条”。在开始时,Fran 只有一条纸条。在第一次操作后,他将拥有两条纸条:第一条长度为 $l$ 厘米,第二条长度为 $n - l$ 厘米(即原纸条的剩余部分)。之后,Fran 将根据 Lana 的指令剪开第一条或第二条纸条。每次他剪开一条纸条时,两个新产生的碎片将在序列中替代原来的纸条。
更正式地,假设 Fran 拥有 $m$ 条纸条,长度分别为 $a_1, a_2, \dots, a_m$。如果 Lana 让他将第 $x$ 个纸条在 $l$ 厘米处剪开,那么新的纸条长度序列将变为:$a_1, a_2, \dots, a_{x-1}, l, a_x - l, a_{x+1}, \dots, a_m$。
在完成所有裁剪后,他和 Lana 想要验证裁剪过程。一种方法是统计最后有多少种不同的纸条长度。你的任务是计算这个数量。
输入格式
第一行包含两个自然数 $n$ 和 $k$($2 \le n \le 500$,$1 \le k < n$),分别表示原始纸条的长度和 Lana 给 Fran 的指令数量。
接下来的 $k$ 行,每行包含两个自然数 $x_i$ 和 $l_i$($1 \le x_i \le i$,$1 \le l_i \le L - 1$,其中 $L$ 是此时第 $x_i$ 个纸条的长度)。这些数字表示 Fran 应该在距离第 $x_i$ 个纸条开头 $l_i$ 厘米处将其剪开(纸条从前往后编号)。
输出格式
在第一行也是唯一的一行中,输出一个整数——在 Fran 完成所有裁剪后,剩余的不同纸条长度的数量。
子任务
| 子任务 | 分值 | 约束条件 |
|---|---|---|
| 1 | 9 | $k \le 3$ |
| 2 | 6 | 对于所有 $i = 1, \dots, k$,$l_i = 1$ |
| 3 | 13 | 对于所有 $i = 1, \dots, k$,$x_i = i$ |
| 4 | 22 | 无附加限制。 |
样例
输入样例 1
5 1 1 2
输出样例 1
2
输入样例 2
6 2 1 4 1 2
输出样例 2
1
输入样例 3
10 3 1 2 2 3 3 2
输出样例 3
2
说明
样例 1 解释
$[5] \to [2, 3]$
样例 2 解释
$[6] \to [4, 2] \to [2, 2, 2]$
样例 3 解释
$[10] \to [2, 8] \to [2, 3, 5] \to [2, 3, 2, 3]$