import sys input = sys.stdin.readline sys.setrecursionlimit(2010) def dfs(v, pv): dp = [1] for nv in G[v]: if nv==pv: continue ndp = dfs(nv, v) merge = [0]*(len(dp)+len(ndp)-1) for i in range(len(dp)): for j in range(len(ndp)): merge[i+j] = (merge[i+j]+dp[i]*ndp[j])%MOD dp = merge dp.append(dp[-1]) return dp N, K = map(int, input().split()) G = [[] for _ in range(N)] for _ in range(N-1): a, b = map(int, input().split()) G[a].append(b) G[b].append(a) MOD = 10**9+7 print(dfs(0, -1)[K])