要在建筑物的屋顶建造一个直升机停机坪,以便直升机着陆。
直升机停机坪必须同时满足以下条件:
- 直升机停机坪由 $k$($k \ge 1$)个同心圆组成。
- 构成停机坪的各个圆的半径分别为 $1, 2, \dots, k$($1$ 到 $k$ 之间的互不相同的自然数)。
- 每个圆的周长必须用单种颜色的油漆绘制。
直升机停机坪的“大小”是指同心圆中最大圆的半径,由上述条件可知它等于同心圆的个数 $k$。
两个直升机停机坪互不相同,意味着停机坪的大小不同,或者大小相同但同心圆所涂颜色的组合不同。
绘制半径为 $r$ 的圆的周长恰好需要 $r$ 桶油漆。
例如,当有 3 桶红色油漆和 4 桶蓝色油漆时,使用这些油漆可以建造出如下图所示的 9 种不同的直升机停机坪。符号 X 表示同心圆的圆心。

作为参考,若想绘制如下图所示的大小为 3 的停机坪,需要红色油漆 $4 = 1 + 3$ 桶、蓝色油漆 2 桶,但给定的红色油漆只有 3 桶,因此无法建造这样的停机坪。

现在你拥有 $a$ 桶红色油漆和 $b$ 桶蓝色油漆。请编写一个程序,计算仅利用这些油漆可以建造的不同直升机停机坪的数量对 $10^9 + 7$ 取模后的余数。
在单个输入中,你需要解决 $T$ 个测试用例。
数据范围
- 给定的所有数均为整数。
- $1 \le T \le 10\ 000$
- $1 \le a, b \le 50\ 000$
子任务
- (3分) $T = 1$,$a, b \le 6$。
- (17分) $T = 1$,$a, b \le 100$。
- (21分) $T = 1$,$a, b \le 1\ 000$。
- (23分) $T = 1$,$a, b \le 5\ 000$。
- (26分) $T = 1$。
- (10分) 无额外限制。
输入格式
第一行包含测试用例的数量 $T$。
接下来的 $T$ 行中,每行包含一个测试用例。每行包含两个整数 $a$ 和 $b$,以一个空格分隔。
输出格式
对于每个测试用例,在单独一行中输出仅使用 $a$ 桶红色油漆和 $b$ 桶蓝色油漆能够建造的不同直升机停机坪的数量对 $10^9 + 7$ 取模后的余数。
样例
样例
输入格式 1
3 3 4 10 5 7 12
输出格式 1
9 25 40