33
include
include <stdio.h>
include
using namespace std;
typedef long long ll;
const int mod=1e9+7;
const int maxn=1e5+9;
vector<ll>g[maxn];
ll f[maxn],son[maxn];</ll>
void dfs(int x, int fa);
ll qpow(ll x,ll y,ll mod);
ll inv(ll a,ll p);
int main()
{
int t,n,m,x,y;
ll a,b;
cin>>t;
while(t--){
cin>>n>>m;
for(int i=1; i<=n; i++){
g[i].clear();
}
for(int i=1; i<n; i++){
cin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
if(m==1){
cout<<1<<endl;
}else{
dfs(1,0);
a=1;
b=0;
for(int i=f[m]; i!=0; i=f[i]){
int temp=(i!=1);
a=ainv(son[i]+temp,mod)%mod;
b=binv(son[i]+temp,mod)%mod;
b=(b+ainv(son[i]-1+temp,mod)%mod(son[i]-1)%mod)%mod;
}
//cout<<(int)((a+b)%mod)<<endl;
printf("%d\n",(int)((a+b)%mod));
}
}
return 0;
}
void dfs(int x, int fa)
{
son[x]=0;
f[x]=fa;
for(int i=0; i<g[x].size(); i++){
int u=g[x][i];
if(u==fa){
continue;
}
dfs(u,x);
son[x]++;
}
}
ll qpow(ll x,ll y,ll mod)
{
ll res=1; x%=mod;
while(y){
if(y&1)res=resx%mod;
x=xx%mod;
y>>=1;
}
return res;
}
ll inv(ll a,ll p)
{
return qpow(a,p-2,p)%p;
}