#P13902. 「KFCOI Round #2」Mobile Gird

「KFCOI Round #2」Mobile Gird

题目描述

一个长度为 nn 的序列 a0an1a_0\sim a_{n-1},第 00 秒时 ai=ia_i=i

11 秒及之后的每一秒,序列上的数会同时进行移动。具体的,axa_x 变为 baxb_{a_x}。其中 bb 是一个 0n10\sim n-1 的排列。

每一秒移动,小 X 会将数进行分类,他会从以下分类标准中选择一个:

  1. aiaj(modm)a_i\equiv a_j \pmod mij(modm)i\equiv j\pmod m,则 aia_iaja_j 同组。
  2. 若 $\lfloor\frac{a_i}{m}\rfloor=\lfloor\frac{a_j}{m}\rfloor$ 且 $\lfloor\frac{i}{m}\rfloor=\lfloor\frac{j}{m}\rfloor$,则 aia_iaja_j 同组。

求出有多少个 0n10\sim n-1 的排列 bb,使得无论小 X 每秒选择哪个分类标准,都满足条件:

  • t11t_1\ge 1t21t_2\ge 1 秒时采取相同的分类标准,则任意 aia_i 所在组的大小在 t1t_1t2t_2 秒时相等。

答案对 109+710^9+7 取模。

输入格式

TT 组数据,第一行输入 TT

每组数据一行,输入 n,mn,m

输出格式

TT 行,每行一个整数代表排列 bb 的数量,答案对 109+710^9+7 取模。

5
5 3
4 2
8 2
10 4
192 321
2
4
48
8
389110882

提示

样例解释

对于第二组数据,满足条件的 bb 有:

{0,1,2,3},{1,0,3,2},{2,3,0,1},{3,2,1,0}\{0,1,2,3\},\{1,0,3,2\},\{2,3,0,1\},\{3,2,1,0\}

b={1,0,3,2}b=\{1,0,3,2\} 时:

  • t=1t=1 秒时,a={1,0,3,2}a=\{1,0,3,2\}

若选择第一种分类标准,则 a0,a1,a2,a3a_0,a_1,a_2,a_3 所在组大小均为 22。(a0a_0a2a_2 一组,a1a_1a3a_3 一组。)

若选择第二种分类标准,则 a0,a1,a2,a3a_0,a_1,a_2,a_3 所在组大小均为 22。(a0a_0a1a_1 一组,a2a_2a3a_3 一组。)

  • t=2t=2 秒时,a={0,1,2,3}a=\{0,1,2,3\}

若选择第一种分类标准,则 a0,a1,a2,a3a_0,a_1,a_2,a_3 所在组大小均为 22

若选择第二种分类标准,则 a0,a1,a2,a3a_0,a_1,a_2,a_3 所在组大小均为 22

  • t=3t=3 秒时,与 t=1t=1 秒相同。

  • t=4t=4 秒时,与 t=2t=2 秒相同。

  • \dots

所以 b={1,0,3,2}b=\{1,0,3,2\} 时满足条件。

数据范围

本题采用捆绑测试

  • Subtask 1(10 pts):T,n,m8T,n,m \le 8
  • Subtask 2(15 pts):nmn\le m
  • Subtask 3(15 pts):mnm \mid n
  • Subtask 4(60 pts):无特殊限制。

对于所有数据,1T,n,m5×1051 \le T,n,m\le 5\times 10^5