#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
const int MAXN = 65;
int n, k;
vector< int > e[MAXN];
long long dp[MAXN][MAXN];
long long tmp[MAXN];
long long sol[MAXN];
void dfs( int node, int dad ) {
memset( dp[node], 0, sizeof dp[node] );
dp[node][0] = 1;
sol[node] = 0;
for( int i = 0; i < (int)e[node].size(); ++i ) {
int w = e[node][i];
if ( w == dad ) continue;
dfs( w, node );
memcpy( tmp, dp[node], sizeof dp[node] );
for ( int lc = 0; lc <= k; ++lc )
for ( int rc = 1; rc+lc <= k; ++rc )
tmp[max(lc,rc)] += dp[node][lc] * dp[w][rc-1];
memcpy( dp[node], tmp, sizeof tmp );
sol[node] += sol[w];
}
for ( int i = 0; i <= k; ++i )
sol[node] += dp[node][i];
}
void process() {
scanf( "%d%d", &n, &k );
for ( int i = 1; i < n; ++i ) {
int x, y;
scanf( "%d%d", &x, &y );
e[x].push_back( y );
e[y].push_back( x );
}
dfs( 0, -1 );
printf( "%lld\n", sol[0] );
}
int main() {
int t; scanf( "%d", &t );
for( int tt = 0; tt < t; ++tt ) {
for ( int i = 0; i < MAXN; ++i ) e[i].clear();
process();
}
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDx2ZWN0b3I+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApjb25zdCBpbnQgTUFYTiA9IDY1OwogCmludCBuLCBrOwp2ZWN0b3I8IGludCA+IGVbTUFYTl07CiAKbG9uZyBsb25nIGRwW01BWE5dW01BWE5dOwpsb25nIGxvbmcgdG1wW01BWE5dOwpsb25nIGxvbmcgc29sW01BWE5dOwogCnZvaWQgZGZzKCBpbnQgbm9kZSwgaW50IGRhZCApIHsKbWVtc2V0KCBkcFtub2RlXSwgMCwgc2l6ZW9mIGRwW25vZGVdICk7CmRwW25vZGVdWzBdID0gMTsKc29sW25vZGVdID0gMDsKIApmb3IoIGludCBpID0gMDsgaSA8IChpbnQpZVtub2RlXS5zaXplKCk7ICsraSApIHsKaW50IHcgPSBlW25vZGVdW2ldOwppZiAoIHcgPT0gZGFkICkgY29udGludWU7CmRmcyggdywgbm9kZSApOwptZW1jcHkoIHRtcCwgZHBbbm9kZV0sIHNpemVvZiBkcFtub2RlXSApOwogCmZvciAoIGludCBsYyA9IDA7IGxjIDw9IGs7ICsrbGMgKQpmb3IgKCBpbnQgcmMgPSAxOyByYytsYyA8PSBrOyArK3JjICkKdG1wW21heChsYyxyYyldICs9IGRwW25vZGVdW2xjXSAqIGRwW3ddW3JjLTFdOwptZW1jcHkoIGRwW25vZGVdLCB0bXAsIHNpemVvZiB0bXAgKTsKc29sW25vZGVdICs9IHNvbFt3XTsKfQogCmZvciAoIGludCBpID0gMDsgaSA8PSBrOyArK2kgKQpzb2xbbm9kZV0gKz0gZHBbbm9kZV1baV07Cn0KIAp2b2lkIHByb2Nlc3MoKSB7CnNjYW5mKCAiJWQlZCIsICZuLCAmayApOwpmb3IgKCBpbnQgaSA9IDE7IGkgPCBuOyArK2kgKSB7CmludCB4LCB5OwpzY2FuZiggIiVkJWQiLCAmeCwgJnkgKTsKZVt4XS5wdXNoX2JhY2soIHkgKTsKZVt5XS5wdXNoX2JhY2soIHggKTsKfQogCmRmcyggMCwgLTEgKTsKcHJpbnRmKCAiJWxsZFxuIiwgc29sWzBdICk7Cn0KIAppbnQgbWFpbigpIHsKaW50IHQ7IHNjYW5mKCAiJWQiLCAmdCApOwpmb3IoIGludCB0dCA9IDA7IHR0IDwgdDsgKyt0dCApIHsKZm9yICggaW50IGkgPSAwOyBpIDwgTUFYTjsgKytpICkgZVtpXS5jbGVhcigpOwpwcm9jZXNzKCk7Cn0KfQ==