时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 768 M,其他语言1536 M
64bit IO Format: %lld

题目描述

圆上有n等分点
你即将给其中k个点染上红色。
如果染色后,存在两个红点,其连线能平分圆的面积,则认为这种染色方式是美丽的;
请问,对k个点染色有多少种不同染色方式能画出一个美丽的图?
其中对n个点标记为1,2,3...n;如果两个圆A B染色不同,当且仅当存在1个点在A中被染为红色,而图B中没有染色
请将最终结果对 10^9+7 (1000000007 ) 取模

输入描述:

第一行输入一个正整数T,表示T组数据
接下来T行,每行两个正整数n,k
1\le T\le10^6; 0\le k \le n\le10^7 ; 2\le n

输出描述:

每行输出一个数表示答案对 10^9+7 取模的结果
示例1

输入

复制
3
2 0
2 1
2 2

输出

复制
0
0
1
示例2

输入

复制
2
4 2
4 4

输出

复制
2
1

备注:

圆上n等分点的定义是:在圆的周长上均匀地选择n个点,使得相邻两个点之间的弧长相等。