#include using namespace std; #define Int register int #define mod 1000000007 #define MAXN 1005 template inline void read (T &t){t = 0;char c = getchar();int f = 1;while (c < '0' || c > '9'){if (c == '-') f = -f;c = getchar();}while (c >= '0' && c <= '9'){t = (t << 3) + (t << 1) + c - '0';c = getchar();} t *= f;} template inline void read (T &t,Args&... args){read (t);read (args...);} template inline void write (T x){if (x < 0){x = -x;putchar ('-');}if (x > 9) write (x / 10);putchar (x % 10 + '0');} int t,n,m,dp[MAXN][MAXN][11]; signed main(){ read (t); while (t --){ read (n,m); memset (dp,0,sizeof (dp)); for (Int i = 0;i <= n;++ i) dp[i][0][0] = 1; for (Int i = 1;i <= n;++ i){ for (Int j = 1;j <= m && j <= i;++ j){ for (Int k = 1;k <= 10;++ k) dp[i][j][k] = 1ll * dp[i - 1][j - 1][k - 1] * (i - 1) % mod; for (Int k = 0;k <= 10;++ k) dp[i][j][0] = (dp[i][j][0] + dp[i - 1][j][k]) % mod; } } if (!dp[n][m][0]){ puts ("-1"); continue; } write (dp[n][m][0]),putchar ('\n'); } return 0; }