列表生成
题目描述
给定整数 n,m。若整数数组 a,b 满足以下条件,则称数组对 (a,b) 是好的:
- a,b 的长度相同,记为 k;
- k≥2,a1=0,ak=n,b1=0,bk=m;
- 对每个 1<i≤k,均有 ai≥ai−1、bi≥bi−1,并且 ai+bi=ai−1+bi−1。
请计算所有好数组对 (a,b) 的长度 k 之和,并对 109+7 取模。
输入格式
第一行一个整数 t,表示测试数据组数。
随后每组数据一行两个整数 n,m。
输出格式
对每组数据输出一个整数,表示答案对 109+7 取模后的结果。
样例输入
4
1 1
1 2
2 2
100 100
样例输出
8
26
101
886336572
数据范围
1≤t≤104,1≤n,m≤5⋅106。所有测试数据中 n 之和不超过 5⋅106,m 之和不超过 5⋅106。
| 子任务编号 |
分值 |
特殊限制 |
| 1 |
20 |
n,m≤4 |
| 2 |
min(n,m)=1 |
| 3 |
n,m≤2000 |
| 4 |
40 |
无特殊限制 |
说明
当 n=m=1 时,三个好数组对的长度分别为 2,3,3,答案为 8。