#P15835. 分层图

分层图

题目描述

给定一个包含 L×NL\times N 个点的简单无向图。

顶点用 (i,j)(i,j) 标号,其中:

i[1,L],j[1,N]i\in[1,L],\qquad j\in[1,N]

图中的边按如下规则确定:

  1. 对于所有 i[1,L)i\in[1,L)j[1,N]j\in[1,N](i,j)(i,j)(i+1,j)(i+1,j) 之间有边。

  2. 对于所有 i[1,L]i\in[1,L]j,k[1,N]j,k\in[1,N],且 jkj\ne k(i,j)(i,j)(i,k)(i,k) 之间有边。

也就是说:

  • 相邻两层中,相同编号的点之间有边;
  • 同一层内的任意两个不同点之间有边。

请计算这张图的哈密顿回路数。

哈密顿回路是指一个顶点集合的排列 PP,满足:

  • P1=(1,1)P_1=(1,1)
  • 对于所有 i[1,V1]i\in[1,|V|-1]PiP_iPi+1P_{i+1} 之间有边;
  • PVP_{|V|}P1P_1 之间有边。

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

输入格式

第一行一个整数 TT,表示测试数据组数。

接下来 TT 行,每行两个整数 N,LN,L,含义如题目描述所述。

输出格式

对于每组数据,输出一行一个整数,表示哈密顿回路数对 109+710^9+7 取模后的结果。

样例输入

9
3 2
2 3
4 2
3 3
4 4
6 3
50 50
19 49
500 9215

样例输出

6
2
60
12
2652
3516720
637478082
837916483
124848471

数据范围与子任务

对于除了样例外的所有数据,满足:

T5T\le 5 2N5002\le N\le 500 2L1042\le L\le 10^4

子任务如下:

测试点编号 分值 特殊限制
1 20 N×L20N\times L\le 20
2 50 N,L50N,L\le 50
3 30 T2T\le 2

提示

请注意实现常数的影响。可以使用 64 位或 128 位整数来减少取模操作次数。