#include using namespace std; #define pb push_back #define mp make_pair #define ALL(x) (x).begin(),(x).end() typedef long long ll; typedef unsigned long long ull; typedef pair pii; const int maxn = 1e3 + 70; const int INF = 0x3f3f3f3f; const ll inf = 0x3f3f3f3f3f3f3f3f; const int MOD = 1e9 + 7; const double eps = 1e-7; const double PI = acos(-1.0); int n, m; ll dp[2][maxn][11]; bool ok[2][maxn][11]; int main(){ //freopen("in.txt", "r", stdin); int T; cin>>T; while(T--){ cin>>n>>m; bool t = 0; memset(dp[t],0,sizeof(dp[t])); memset(ok[t],0,sizeof(ok[t])); dp[t][0][0] = 1; ok[t][0][0] = true; for(int i=1;i<=n;i++){ for(int j=0;j<=m;j++){ dp[t^1][j][0] = 0; ok[t^1][j][0] = 0; for(int l=0;l<=10;l++){ dp[t^1][j][0] = (dp[t^1][j][0]+dp[t][j][l])%MOD; ok[t^1][j][0] |= ok[t][j][l]; } for(int k=1;k<=10;k++){ dp[t^1][j][k]=dp[t][j-1][k-1]*(i-1)%MOD; ok[t^1][j][k]=ok[t][j-1][k-1]&&(i!=1); } } t ^= 1; } printf("%lld\n",ok[t][m][0]?dp[t][m][0]:-1); } return 0; }