#include #include using namespace std; const long mod=1e9+7; int N,K; vectorG[1010]; long dp[1010][1010]; void dfs1(int u,int p) { for(int i=0;i=mod)t-=mod; (dp[u][i]*=t)%=mod; } } } long ans; void dfs2(int u,int p) { vectorcs; for(int v:G[u])if(v!=p)cs.push_back(v); vector >L(cs.size()+1,vector(K,1)); vector >R(cs.size()+1,vector(K,1)); long t=p==-1; for(int i=0;i=mod)t-=mod; } L[0][i]=t; } for(int i=0;i=mod)t-=mod; L[i+1][j]=L[i][j]*t%mod; } } for(int i=cs.size();i--;) { long t=0; for(int j=0;j=mod)t-=mod; R[i][j]=R[i+1][j]*t%mod; } } for(int i=0;i>N>>K; for(int i=1;i>a>>b; a--,b--; G[a].push_back(b); G[b].push_back(a); } dfs1(0,-1); dfs2(0,-1); cout<