题目描述
Lawliet 有一个长度为 n 的数列,表示为 a1,a2,…,an,他想确定有多少种好的分割方式。
如果分割大小 k 满足 1≤k≤n,且在按分割大小将数列 a 划分为多个部分后,每个子序列都是非递减的,那么分割大小 k 被认为是好的分割大小。分割方式如下:
- 数列 a 被划分为 ⌈kn⌉ 个部分。
- 对于第 i 部分(1≤i≤⌈kn⌉−1),元素为 a(i−1)×k+1,a(i−1)×k+2,…,ai×k。
- 对于第 ⌈kn⌉ 部分,元素为 a(⌈kn⌉−1)×k+1,…,an。注意,最后一部分的长度可能小于 k。
Lawliet 认为这个问题太简单了,所以他将进行 q 次修改。每次修改提供两个正整数 p 和 v,表示将 ap 的值更改为 v。
你的任务是帮助 Lawliet 计算每次修改之前和每次修改之后的好的分割大小的数量。
输入
第一行包含一个整数 T(1≤T≤10),表示测试用例的数量。
对于每个测试用例:
- 第一行包含两个整数 n(1≤n≤2⋅105)和 q(1≤q≤2⋅105),表示数列的长度和修改次数。
- 第二行包含 n 个整数,表示数列 a1,a2,…,an(1≤ai≤2⋅109)。
- 接下来的 q 行,每行包含两个整数 p(1≤p≤n)和 v(1≤v≤2⋅109),表示将序列中的第 p 个元素修改为 v。
保证所有测试用例中 n 的总和和 q 的总和均不超过 2⋅105。
输出
对于每个测试用例,输出 q+1 行,表示每次修改之前和每次修改之后的好的分割大小数量。
样例
1
5 2
4 3 2 6 1
2 5
3 5
1
2
3
样例解释
初始时,唯一的好分割大小是 k=1。
在第一次修改之后,数列变为 [4, 5, 2, 6, 1]
。此时 k=1 和 k=2 均为好分割大小。
在第二次修改之后,数列变为 [4, 5, 5, 6, 1]
。此时 k=1、k=2 和 k=4 均为好分割大小。