N,K=map(int,raw_input().split()) parent=[-1 for i in range(N)] child=[[] for i in range(N)] mod=1000000007 for i in range(N-1): a,b=map(int,raw_input().split()) parent[b]=a child[a].append(b) dp=[[0 for j in range(N+1)] for k in range(N)] for i in range(N-1,-1,-1): if len(child[i])==0: dp[i][0]=1 dp[i][1]=1 continue l=[(0,1)] for c in child[i]: nl=[] for j in range(N+1): if dp[c][j]==0: break for key,val in l: nl.append((key+j,val*dp[c][j]%mod)) l=nl s=0 for key,val in l: dp[i][key]+=val dp[i][key]%=mod s=max(s,key) dp[i][s+1]=1 print dp[0][K]