#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const double PI = 3.14159265358979323846; const double EPS = 1e-12; const int INF = 1<<25; typedef pair P; typedef long long ll; typedef unsigned long long ull; #define MAX_N 2000 int N, K; vector g[MAX_N]; ll dp[MAX_N][MAX_N]; ll mod = 1000000007; ll dfs(int u){ dp[u][0] = 1; ll sz = 1; for(int i = 0; i < g[u].size(); i++){ int v = g[u][i]; ll t = dfs(v); for(int j = sz-1; j >= 0; j--){ for(int k = 1; k <= t; k++){ (dp[u][j+k]+=dp[u][j]*dp[v][k])%=mod; } } sz += t; } dp[u][sz] = 1; return sz; } int main(){ cin>>N>>K; for(int i = 0; i < N-1; i++){ int a, b; cin>>a>>b; g[a].push_back(b); } dfs(0); cout<