好好好数组
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\,\,\,\,\,\,\,\,\,对于数组 \{a_1,a_2,\dots,a_n\} ,我们定义它是好的,当且仅当:对于全部的 i \in [1,n)a_i = a_{i+1} \bmod i 总是成立;

\,\,\,\,\,\,\,\,\,现在,你可以选择 n 个整数组成一个数组,使得这个数组是好的;同时,你还需要保证:
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\bullet\,数组中至少存在 m 个不同的数字;
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\bullet\,数组中的每一个数字都满足 \in [0,n]

\,\,\,\,\,\,\,\,\,在这里,\bmod 代表取模。

输入描述:

\,\,\,\,\,\,\,\,\,每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\le T\le 10^5\right) 代表数据组数,每组测试数据描述如下:

\,\,\,\,\,\,\,\,\,在一行上输入两个整数 n,m \left( 1\le m \le n \le 10^7\right) 代表你需要挑选的数字数量、不相同数字个数的限制。

输出描述:

\,\,\,\,\,\,\,\,\,对于每一组测试数据,在一行上输出一个整数,代表满足条件的数组数量。
示例1

输入

复制
3
2 2
3 2
2 1

输出

复制
2
3
3

说明

\,\,\,\,\,\,\,\,\,在第一组测试数据中:
~~~~~~~~~\bullet\数组 \{0,1\} 满足条件,因为 a_2 \bmod 1=1 \bmod 1 = 0
~~~~~~~~~\bullet\数组 \{0,2\} 满足条件,因为 a_2 \bmod 1=2 \bmod 1 = 0
\,\,\,\,\,\,\,\,\,在第二组测试数据中,m=2数组 \{0,0,2\}\{0,1,1\} 均满足条件,m=3数组 \{0,1,3\} 满足条件。