题目描述
给定两个正整数 n,k。
定义集合:
M={−n,−n+1,−n+2,…,−1,0,1,…,n}
你需要统计满足下列条件的函数 f(x) 的数量:
-
f:M→M。
-
对任意 x∈M,都有:
fk(x)=−x
其中:
f0(x)=x
并且:
fi(x)=f(fi−1(x))(i=1,2,…)
也就是说,fk(x) 表示对 x 连续作用 k 次函数 f 后得到的结果。
- 对任意 x∈M,都有:
∣∣f(x)∣−∣x∣∣≤2
请输出满足条件的函数数量对 1000000007 取模后的结果。
输入格式
第一行包含一个整数 T,表示测试数据组数。
接下来 T 行,每行包含两个整数 n,k,其中:
- n 表示集合 M 的上界;
- k 表示函数迭代次数。
输出格式
对于每组测试数据,输出一行一个整数,表示答案对 1000000007 取模后的结果。
数据范围
1≤T≤100
n×k≤109
所有测试数据的 n×k 之和不超过:
4×109
样例输入
7
1 1
2 1
100 1
1 2
2 2
3 2
20 4
样例输出
1
1
1
0
2
0
1048576
提示
当 k=1 时,唯一合法函数是:
f(x)=−x
当 n=k=2 时,存在两个合法函数:
f:(−2,−1,0,1,2)→(1,−2,0,2,−1)
或:
f:(−2,−1,0,1,2)→(−1,2,0,−2,1)