func_code_string: #include<iostream>   #include<cstdio>   #include<algorithm>   #include<cmath>   #include<cstring>   #include<queue>   #define ll long long   using namespace std;   const int N=310,M=100005,mod=1e9+7;   int n,tot;   ll inv,ans;   int head[N],ver[M],Nxt[M],dep[N],fa[N][20];   ll f[N][N];   void add(int x,int y){    ver[++tot]=y;    Nxt[tot]=head[x];    head[x]=tot;   }   void dfs(int u,int now){    dep[u]=now;    for(int i=head[u];i;i=Nxt[i]){     int y=ver[i];     if(y==fa[u][0]) continue;     fa[y][0]=u;     for(int j=1;j<=18;j++){      fa[y][j]=fa[fa[y][j-1]][j-1];     }     dfs(y,now+1);    }   }   int LCA(int x,int y){    if(dep[x]<dep[y]) swap(x,y);    for(int j=18;j>=0;j--){     if(dep[fa[x][j]]>=dep[y]) x=fa[x][j];    }    if(x==y) return x;    for(int j=18;j>=0;j--){     if(fa[x][j]!=fa[y][j]){      x=fa[x][j];y=fa[y][j];     }    }    return fa[x][0];   }   ll ksm(ll x,ll p){    ll sum=1;    while(p){     if(p&1) sum=sum*x%mod;     x=x*x%mod;     p>>=1;    }    return sum;   }   int main()   {    scanf( %d ,&n);        inv=ksm(2,mod-2);        for(int i=1;i<=n;i++){     f[i][0]=1;     f[0][i]=0;    }        for(int i=1;i<=n;i++){     for(int j=1;j<=n;j++){      f[i][j]=(f[i-1][j]+f[i][j-1])*inv%mod;     }    }        for(int i=1;i<n;i++){     int x,y;     scanf( %d%d ,&x,&y);     add(x,y);add(y,x);    }        for(int i=1;i<=n;i++){     memset(fa,0,sizeof(fa));     memset(dep,0,sizeof(dep));     dfs(i,1);        //  for(int j=1;j<=n;j++){   //   printf( %d %d n ,j,dep[j]);   //  }           for(int j=1;j<=n;j++){      for(int k=j+1;k<=n;k++){       int lca=LCA(j,k);   //    printf( 以%d为根 %d 和 %d 的 LCA 是%d n ,i,j,k,lca);       ans=(ans+f[dep[j]-dep[lca]][dep[k]-dep[lca]])%mod;      }     }    }        printf( %lld n ,ans*ksm(n,mod-2)%mod);    return 0;   }   