SP5831 PERMJUMP - Permutation Jumping

题目描述

John 喜欢玩一种叫做「排列跳跃」的游戏。他会先写下一个由前 $n$ 个自然数组成的排列 $A$。接着,他从任意位置的格子开始起跳。如果当前在格子 $x$ 且未访问过 $A[x]$ 所指向的格子,他就跳到 $A[x]$。他会持续进行这个过程,直到无法跳到新的格子,因为 $A[x]$ 已经被访问过。游戏结束后,他统计在游戏中访问过的所有格子的数量,包括起始格子。 John 希望游戏不会太久也不会太短,为此他希望无论从哪个格子开始,都不会访问超过 $K$ 个格子,同时至少要访问两个格子。 现在,他想知道,有多少种排列可以满足这样的要求,也就是说,任意起始格子都能确保访问至少 2 个格子且至多 $K$ 个格子。

输入格式

第一行给出测试用例的数量 $T$($T \leq 1000$)。接下来的 $T$ 行中,每行包含两个用空格分隔的整数 $N$ 和 $K$($2 \leq K \leq N \leq 100$)。

输出格式

输出 $T$ 行,每行对应一个测试用例的结果。针对每个测试用例,输出一个整数,表示符合要求的排列数,由于结果可能非常大,请取模 $1000000007$ 后输出。

说明/提示

- $2 \leq T \leq 1000$ - $2 \leq K \leq N \leq 100$ **样例** **输入** ``` 2 4 2 6 4 ``` **输出** ``` 3 145 ``` **注释** - 对于第一个测试用例,有效的排列有 {2 1 4 3}、{3 4 1 2} 和 {4 3 2 1}。 **本翻译由 AI 自动生成**