#include using namespace std; const int M=1005,P=1e9+7; int n,m,f[2][M][15],ans; void Add(int &x,int y){x+=y;if(x>=P)x-=P;} void Clear(){ memset(f,0,sizeof(f)); f[1][0][0]=1; } void solve(){ Clear();scanf("%d%d",&n,&m); for(int i=2;i<=n;++i){ int s=i&1; memset(f[s],0,sizeof(f[s])); for(int j=0;j<=m;++j)for(int k=0;k<=10;++k){ Add(f[s][j][0],f[!s][j][k]); Add(f[s][j+1][k+1],1ll*f[!s][j][k]*(i-1)%P); } } ans=f[n&1][m][0]; if(ans==0)ans=-1; printf("%d\n",ans); } int main(){ int t;scanf("%d",&t); for(;t;--t)solve(); return 0; }