#include <bits/stdc++.h>
#define ll long long
#define mod 1000000007//aacoder
// aacoder codes
#define pb push_back //aacoder
using namespace std;
vector<ll> aacoder[200008],value,childs,ans; //aacoder
void dfs(ll now, ll last){ //aacoder
for(ll i=0; i<aacoder[now].size(); i++){ //aacoder
// aacoder
ll child= aacoder[now][i]; //aacoder
if(child!=last) //aacoder
dfs(child,now); //aacoder
}
childs.clear();
for(ll i=0; i<aacoder[now].size(); i++){ //aacoder
// aacoder
ll child= aacoder[now][i]; //aacoder
if(child!=last)
childs.push_back(value[child]); //aacoder
}
if(childs.size()>0){
sort(childs.begin(),childs.end()); //aacoder
ll x=childs[0]; //aacoderhhuhik
// aacoderjnkj
ll checker=0; //aacoder
// aacoder
for(ll i=0; i<childs.size(); i++){ //aacoder
// aacoder //aacoder pooji aacoderpokfjdfdfdfv
if(childs[i]!= x) checker++; //aacoder
// aacoder
}
if(checker==0) value[now]+= x+1; //aacoder
// aacoder
if(checker!=0) value[now]+= x +2; //aacoder
}
else
value[now]=0; //aacoder
}
void dfs1(ll node, ll par, ll minh){
for(ll i=0; i<aacoder[node].size(); i++){ //aacoder
// aacoder
ll child= aacoder[node][i];
// snekar
minh = min(minh,value[node]);
if(child!=par){
if(value[child]>=minh-1){
dfs1(child,node,minh);
}
}
}
if(value[node]==0){
ans.push_back(node);
}
}
/*
code chef thanks aacoder for the nice questions
i think i did well in this aacoderpokfjdfdfdfv
printf
scanf
cin ,cout are same
*/
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
ll t = 1; cin >> t;
while(t--) {
ll N; cin >> N;
value.assign(N+1,0);
for(ll i=0;i<N-1; i++)
{
int l, r;
cin >> l >> r;
aacoder[l].pb(r), aacoder[r].pb(l);
}
dfs(1,0);
int minx = INT_MAX;
for(ll i = 0; i<aacoder[1].size(); i++){
ll child = aacoder[1][i];
if(value[child]<minx){
minx = value[child];
}
}
for(ll i=0; i<aacoder[1].size(); i++){
// aacoder
ll child = aacoder[1][i];
if(value[child] == minx)
// aacoder
dfs1(child,1,minx);
}
sort(ans.begin(), ans.end());
// aacoder
cout<<ans.size()<<" "<<minx+1<<endl;//aacoder
// aacoder
for (ll i = 0; i <ans.size(); ++i) cout<<ans[i]<<" ";//aacoder
cout<<endl;
for (ll i = 1; i <=N; ++i) {aacoder[i].clear(); }
// aacoder
value.clear();
ans.clear();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbW9kIDEwMDAwMDAwMDcvL2FhY29kZXIKLy8gYWFjb2RlciBjb2RlcyAKI2RlZmluZSBwYiBwdXNoX2JhY2sgLy9hYWNvZGVyCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2ZWN0b3I8bGw+IGFhY29kZXJbMjAwMDA4XSx2YWx1ZSxjaGlsZHMsYW5zOyAvL2FhY29kZXIKCnZvaWQgZGZzKGxsIG5vdywgbGwgbGFzdCl7IC8vYWFjb2RlcgoKZm9yKGxsIGk9MDsgaTxhYWNvZGVyW25vd10uc2l6ZSgpOyBpKyspeyAvL2FhY29kZXIKICAgIC8vIGFhY29kZXIKICAgICAgICBsbCBjaGlsZD0gYWFjb2Rlcltub3ddW2ldOyAvL2FhY29kZXIKICAgICAgICBpZihjaGlsZCE9bGFzdCkgLy9hYWNvZGVyCiAgICAgICAgZGZzKGNoaWxkLG5vdyk7IC8vYWFjb2RlcgogICAgfQogICAgY2hpbGRzLmNsZWFyKCk7CiAgICAKICAgIGZvcihsbCBpPTA7IGk8YWFjb2Rlcltub3ddLnNpemUoKTsgaSsrKXsgIC8vYWFjb2RlcgogICAgICAgIC8vIGFhY29kZXIKICAgICAgICBsbCBjaGlsZD0gYWFjb2Rlcltub3ddW2ldOyAgLy9hYWNvZGVyCiAgICAgICAgaWYoY2hpbGQhPWxhc3QpCiAgICAgICAgY2hpbGRzLnB1c2hfYmFjayh2YWx1ZVtjaGlsZF0pOyAvL2FhY29kZXIKICAgIH0KICAgIGlmKGNoaWxkcy5zaXplKCk+MCl7CiAgICAgICAgc29ydChjaGlsZHMuYmVnaW4oKSxjaGlsZHMuZW5kKCkpOyAvL2FhY29kZXIKICAgICAgICAKICAgICAgICBsbCB4PWNoaWxkc1swXTsgIC8vYWFjb2RlcmhodWhpawogICAgICAgIC8vIGFhY29kZXJqbmtqCiAgICAgICAgbGwgY2hlY2tlcj0wOyAvL2FhY29kZXIKICAgICAgICAvLyBhYWNvZGVyCiAgICAgICAgZm9yKGxsIGk9MDsgaTxjaGlsZHMuc2l6ZSgpOyBpKyspeyAgLy9hYWNvZGVyCiAgICAgICAgICAgIC8vIGFhY29kZXIgIC8vYWFjb2RlciBwb29qaSBhYWNvZGVycG9rZmpkZmRmZGZ2CiAgICAgICAgICAgIGlmKGNoaWxkc1tpXSE9IHgpIGNoZWNrZXIrKzsgIC8vYWFjb2RlcgogICAgICAgICAgICAvLyBhYWNvZGVyCiAgICAgICAgfQogICAgICAgIGlmKGNoZWNrZXI9PTApIHZhbHVlW25vd10rPSB4KzE7IC8vYWFjb2RlcgogICAgICAgIC8vIGFhY29kZXIKICAgICAgICBpZihjaGVja2VyIT0wKSB2YWx1ZVtub3ddKz0geCArMjsgICAgICAvL2FhY29kZXIKICAgIH0KICAgIGVsc2UKICAgIHZhbHVlW25vd109MDsgLy9hYWNvZGVyCn0KIAoKdm9pZCBkZnMxKGxsIG5vZGUsIGxsIHBhciwgbGwgbWluaCl7CiAgCiAgICBmb3IobGwgaT0wOyBpPGFhY29kZXJbbm9kZV0uc2l6ZSgpOyBpKyspeyAgLy9hYWNvZGVyCiAgICAgICAgLy8gYWFjb2RlcgogICAgICAgIGxsIGNoaWxkPSBhYWNvZGVyW25vZGVdW2ldOwogICAgICAgIC8vIHNuZWthcgogICAgICAgIG1pbmggPSBtaW4obWluaCx2YWx1ZVtub2RlXSk7CiAgICAgICAgaWYoY2hpbGQhPXBhcil7CiAgICAgICAgICAgIGlmKHZhbHVlW2NoaWxkXT49bWluaC0xKXsKICAgICAgICAgICAgZGZzMShjaGlsZCxub2RlLG1pbmgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYodmFsdWVbbm9kZV09PTApewogICAgYW5zLnB1c2hfYmFjayhub2RlKTsKICAgIH0KfSAgICAKCi8qIApjb2RlIGNoZWYgdGhhbmtzICBhYWNvZGVyIGZvciB0aGUgbmljZSBxdWVzdGlvbnMKaSB0aGluayBpIGRpZCB3ZWxsIGluIHRoaXMgYWFjb2RlcnBva2ZqZGZkZmRmdgpwcmludGYKc2NhbmYgCmNpbiAsY291dCBhcmUgc2FtZSAKKi8KICAgIAoKCgppbnQgbWFpbigpewppb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgICBjaW4udGllKDApOwoKbGwgdCA9IDE7IGNpbiA+PiB0OwogICAgd2hpbGUodC0tKSB7CiAgICAgICAgbGwgTjsgY2luID4+IE47Cgp2YWx1ZS5hc3NpZ24oTisxLDApOwoKICAgICAgICBmb3IobGwgaT0wO2k8Ti0xOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBpbnQgbCwgcjsKICAgICAgICAgICAgY2luID4+IGwgPj4gcjsKICAgICAgICAgICAgYWFjb2RlcltsXS5wYihyKSwgYWFjb2RlcltyXS5wYihsKTsKICAgICAgICB9CgogICAgICAgIGRmcygxLDApOwoKCiBpbnQgbWlueCA9IElOVF9NQVg7CiAgICAgICAgCiAgICAgICAgZm9yKGxsIGkgPSAwOyBpPGFhY29kZXJbMV0uc2l6ZSgpOyBpKyspewogICAgICAgICAgICBsbCBjaGlsZCA9IGFhY29kZXJbMV1baV07CiAgICAgICAgICAgIGlmKHZhbHVlW2NoaWxkXTxtaW54KXsKICAgICAgICAgICAgICAgIG1pbnggPSB2YWx1ZVtjaGlsZF07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvcihsbCBpPTA7IGk8YWFjb2RlclsxXS5zaXplKCk7IGkrKyl7CiAgICAgICAgICAgIC8vIGFhY29kZXIKICAgICAgICAgICAgbGwgY2hpbGQgPSBhYWNvZGVyWzFdW2ldOwogICAgICAgICAgICBpZih2YWx1ZVtjaGlsZF0gPT0gbWlueCkKICAgICAgICAgICAgLy8gYWFjb2RlcgogICAgICAgICAgICBkZnMxKGNoaWxkLDEsbWlueCk7CgogICAgICAgIH0KCiAgICAgICAgc29ydChhbnMuYmVnaW4oKSwgYW5zLmVuZCgpKTsKICAgICAgICAvLyBhYWNvZGVyCiAgICAgICAgY291dDw8YW5zLnNpemUoKTw8IiAiPDxtaW54KzE8PGVuZGw7Ly9hYWNvZGVyCiAgICAgICAgLy8gYWFjb2RlcgogICAgICAgIGZvciAobGwgaSA9IDA7IGkgPGFucy5zaXplKCk7ICsraSkgY291dDw8YW5zW2ldPDwiICI7Ly9hYWNvZGVyCiAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICAKCiAgICAgICAgZm9yIChsbCBpID0gMTsgaSA8PU47ICsraSkge2FhY29kZXJbaV0uY2xlYXIoKTsgfQovLyBhYWNvZGVyIAogICAgICAgdmFsdWUuY2xlYXIoKTsKICAgICAgIGFucy5jbGVhcigpOwoKCiAgICAgICAgCiAgICAgICAKCiAgICB9IAogICAgCiAgICByZXR1cm4gMDsKICAgIAp9