#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

int main() {
	int t;
	cin >> t;
	vector<vector<int> > graph;
	vector<int> degree;
	vector<int> vis; 
	while(t--) {
		int n;
		cin >> n;
		graph.resize(n + 1);
		for(vector<vector<int> >::iterator it = graph.begin(); it != graph.end(); it++) {
			it -> clear();
		} 
		degree.assign(n + 1, 0);
		vis.assign(n + 1, 0);
		int v1, v2;
		for (int i = 0; i < n - 1; i++) {
			cin >> v1 >> v2;
			graph[v1].push_back(v2);
			graph[v2].push_back(v1);
			degree[v1]++;
			degree[v2]++;
		}
		queue<int> q;
		for (int i = 1; i <= n; i++) {
			if (degree[i] == 1) {
				q.push(i);
				vis[i] = 1;
			}
		}
		int round = 0, sz = 0;
		vector<int> ans;
		while (!q.empty()) {
			ans.clear();
			sz = q.size();
			for (int i = 0; i < sz; i++) {
				int v = q.front();
				ans.push_back(v);
				q.pop(); 
				for (vector<int>::iterator it = graph[v].begin(); it != graph[v].end(); it++) {
					if (!vis[*it]) {
						q.push(*it);
						vis[*it] = 1;	
					} 
				}
			}
			round++;
		}
		sort(ans.begin(), ans.end());
		cout << ans.size() << endl;
		for (vector<int>::iterator it = ans.begin(); it != ans.end(); it++) {
			cout << *it << " ";
		}
		cout << endl; 
	}
}