#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define pb push_back
#define pob pop_back
const ll mod = 1000000007;
const int NAX = 200002;
vector<int> g[NAX];
vector<int> g2[NAX];
int n;
vector<ll> pw(NAX);
vector<int> indeg(NAX);
ll answer;
void dfs(int u, int pa){
for (int i=0; i<g[u].size(); i++){
int v=g[u][i];
if (v!=pa){
dfs(v,u);
}
}
if (u>1){
g2[u].pb(pa);
indeg[pa]++;
}
}
void solve(){
cin>>n;
for (int i=1; i<=n; i++) g[i].clear(), g2[i].clear(), indeg[i]=0;
answer=0;
for (int i=0; i<n-1; i++){
int a,b; cin>>a>>b;
g[a].pb(b);
g[b].pb(a);
}
dfs(1,0);
vector<int> bfs;
for (int i=1; i<=n; i++){
if (indeg[i]==0) bfs.pb(i);
}
vector<int> numstage;
while(!bfs.empty()){
numstage.pb(bfs.size());
vector<int> nvec;
while(!bfs.empty()){
int u=bfs.back();
bfs.pob();
for (int i=0; i<g2[u].size(); i++){
int v=g2[u][i];
indeg[v]--;
if (indeg[v]==0){
nvec.pb(v);
}
}
}
bfs=nvec;
}
reverse(numstage.begin(),numstage.end());
int x=0;
for (int i=0; i<numstage.size(); i++){
if (x>0) answer = (answer + (pw[n-x]*answer)%MOD )%MOD;
answer = (answer + pw[n-numstage[i]])%MOD;
x=x+numstage[i];
}
cout<<answer<<'n';
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
pw[0]=1;
for (int i=1; i<NAX; i++) pw[i]=(pw[i-1]*2)%MOD;
int t; cin>>t;
while(t--) solve();
return 0;
}