#include<bits/stdc++.h>
using namespace std;
int T,n,k,sum[100010],ans;
vector<int> tree[100010];
void dfs(int now,int from){
sum[now]=1;
for(int i=0;i<tree[now].size();i++){
int to=tree[now][i];
if(to!=from){
dfs(to,now);
sum[now]+=sum[to];
}
}
if(sum[now]==k)sum[now]=0,ans++;
}
int main(){
cin>>T;
while(T--){
for(int i=1;i<=100000;i++)tree[i].clear();
ans=0;
memset(sum,0,sizeof(sum));
cin>>n>>k;
if(n%k){
cout<<"NO"<<endl;
continue;
}
for(int i=1;i<n;i++){
int a,b;
cin>>a>>b;
tree[a].push_back(b);
tree[b].push_back(a);
}
dfs(1,0);
if(ans==(n/k)){
cout<<"YES"<<endl;
}else cout<<"NO"<<endl;
}
return 0;
}