const int MAXN=205,mod=1e9+7;
int dp[MAXN][MAXN];
int quick_pow(int a,int k){
int ans=1;
while(k){
if(k&1)ans=1LL*ans*a%mod;
a=1LL*a*a%mod;
k>>=1;
}
return ans;
}
struct Edge{
int to,next;
}edge[MAXN<<1];
int head[MAXN],edge_cnt;
void Insert(int u,int v){
edge[++edge_cnt]=Edge{v,head[u]};
head[u]=edge_cnt;
}
vector<int> ch[MAXN];
int dep[MAXN],ans;
void dfs(int u,int fa){
dep[u]=dep[fa]+1;
ch[u].clear();
ch[u].push_back(u);
for(int i=head[u];i;i=edge[i].next){
int v=edge[i].to;
if(v==fa)continue;
dfs(v,u);
_for(j,0,ch[u].size())
_for(k,0,ch[v].size()){
int x=ch[u][j],y=ch[v][k];
int d1=dep[max(x,y)]-dep[u],d2=dep[min(x,y)]-dep[u];
ans=(ans+dp[d1][d2])%mod;
}
_for(j,0,ch[v].size())
ch[u].push_back(ch[v][j]);
}
}
int main()
{
int inv2=quick_pow(2,mod-2);
_for(i,1,MAXN)dp[0][i]=1;
_for(i,1,MAXN)_for(j,1,MAXN)
dp[i][j]=1LL*(dp[i-1][j]+dp[i][j-1])*inv2%mod;
int n=read_int();
_for(i,1,n){
int u=read_int(),v=read_int();
Insert(u,v);
Insert(v,u);
}
_rep(i,1,n)
dfs(i,0);
enter(1LL*ans*quick_pow(n,mod-2)%mod);
return 0;
}