拆拆

多组数据。

每组给定两个数 X,YX, Y,问有多少个长度为 YY 的整数序列之乘积为 XX,即

i=1Yfi=X\prod_{i = 1}^Y f_i = X

注意:两序列不同,当且仅当至少有一个下标相同的位置不同。如 (1,2),(2,1)(1, 2), (2, 1) 被视作不同的序列。

答案可能很大,将其模以 109+710^9 + 7 输出。

例如:给定 (X,Y)=(6,2)(X, Y) = (6, 2)。可以将 66 分成 (±1,±6),(±2,±3),(±3,±2),(±6,±1)(\pm1, \pm6), (\pm2, \pm3), (\pm3, \pm2), (\pm6, \pm1) 八种长度为 22 的序列,因此答案是 88

输入格式

第一行一个整数 TT,表示接下来有 TT 组数据。

每组数据包含两个数字 X,YX, Y

输出格式

对于每组数据,输出一行,表示答案。

样例输入

4
6 2
6 3
6 4
1 4

样例输出

8
36
128
8

解释:对于数据四,相当于将偶数个负号分配给 11,因此答案为 (40)+(42)+(44)=8\displaystyle\binom{4}{0} + \displaystyle\binom{4}{2} + \displaystyle\binom{4}{4} = 8

数据规模

  • 1T1051 \le T \le 10^5
  • 1X,Y1061 \le X, Y \le 10^6