#include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; typedef double db; typedef pairp1; const int mod=1000000007; int dp[65][65][65]; int zuhe[65][65]; int jie[65]; int fa[65][65]; void init(){ jie[0]=1; for(int i=1;i<=64;i++){ jie[i]=((LL)jie[i-1]*i)%mod; } for(int i=0;i<=64;i++){ zuhe[i][0]=1; for(int j=1;j<=i;j++){ zuhe[i][j]=zuhe[i-1][j]+zuhe[i-1][j-1]; zuhe[i][j]%=mod; } } } int cnt[6005]; int main() { int t,n,k; cin>>t; init(); cnt[0]=1; for(int i=1;i<6005;i++){ cnt[i]=cnt[i-1]*2; cnt[i]%=mod; } for(int i=1;i<65;i++){ fa[i][0]=1; for(int j=1;j<65;j++){ fa[i][j]=((LL)fa[i][j-1]*(cnt[i]-1))%mod; } } while(t--){ scanf("%d%d",&n,&k); if(n==1){ printf("1\n"); continue; } if(k==1){ printf("%d\n",cnt[((n-2)*(n-1))/2]); continue; } int ans=0; memset(dp,0,sizeof(dp)); dp[0][1][1]=1; for(int j=1;j