#include <bits/stdc++.h>
using namespace std;
#define FOR(i,a,b) for (int i = (a), _b = (b); i <= (_b); ++i)
#define FORD(i,a,b) for (int i = (a), _b = (b); i >= (_b); --i)
#define REP(i, n) for (int i = (0), _n = (n); i < _n; ++i)
#define getBit(mask,i) (((mask) >> (i)) & (1LL))
#define MASK(x) (1LL << (x))
#define allof(x) begin(x), end(x)
#define el cout << '\n';
//--Compare------------------------------------------------------------------------------------
template<class X, class Y>
inline bool maximize(X &x, const Y &y){ return (x < y) ? x = y, 1 : 0; }
template<class X, class Y>
inline bool minimize(X &x, const Y &y){ return (x > y) ? x = y, 1 : 0; }
//--Process------------------------------------------------------------------------------------
//#define int long long
typedef pair <int, int> pii;
#define fi first
#define se second
constexpr int MAXN = 160016;
int n, q;
vector <int> adj[MAXN];
namespace subtask2
{
void solve(void)
{
int LG = __lg(n);
vector <int> h(n + 1, 0);
vector <vector<int>> par(n + 1, vector <int> (LG + 1, 0));
function <void(int, int, bool)> dfs = [&](int u, int p, bool ok)
{
if (ok)
{
par[u][0] = p;
FOR(i, 1, LG) par[u][i] = par[par[u][i - 1]][i - 1];
}
for (int v : adj[u])
{
if (v == p) continue;
h[v] = h[u] + 1;
dfs(v, u, ok);
}
};
function <int(int, int)> lca = [&](int u, int v)
{
if (h[u] < h[v]) swap(u, v);
for (int d = h[u] - h[v], nxt; d; d ^= MASK(nxt))
{
nxt = 31 - __builtin_clz(d);
u = par[u][nxt];
}
if (u == v) return u;
FORD(i, LG, 0) if (par[u][i] != par[v][i]) u = par[u][i], v = par[v][i];
return par[u][0];
};
int root = 0, D = 0;
dfs(1, 0, 0);
FOR(u, 1, n)
{
if (maximize(D, h[u])) root = u;
h[u] = 0;
}
dfs(root, 0, 1);
FOR(u, 1, n) maximize(D, h[u]);
vector <pair<int,int>> ord;
FOR(u, 1, n) FOR(v, 1, n)
if (u == v) continue;
else if (h[u] + h[v] - 2 * h[lca(u, v)] == D) ord.emplace_back(u, v);
cout << ord.size() << '\n';
sort(allof(ord));
while (q--)
{
int pos; cin >> pos;
if (pos > ord.size()) cout << "0 0\n";
else cout << ord[pos - 1].fi << ' ' << ord[pos - 1].se << '\n';
}
}
}
signed main(void)
{
cin.tie(nullptr)->sync_with_stdio(false);
cin.exceptions(cin.failbit);
#define task "BAI3"
if (fopen(task".INP", "r"))
{
freopen(task".INP", "r", stdin);
freopen(task".OUT", "w", stdout);
}
//--OpenFile-------------------------------------------------------------------------------
int T; cin >> T;
while (T--)
{
cin >> n >> q;
FOR(u, 1, n) adj[u].clear();
FOR(i, 2, n)
{
int u, v; cin >> u >> v;
adj[u].emplace_back(v);
adj[v].emplace_back(u);
}
subtask2::solve();
}
cerr << (1.0 * clock() / CLOCKS_PER_SEC);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBGT1IoaSxhLGIpICAgICAgZm9yIChpbnQgaSA9IChhKSwgX2IgPSAoYik7IGkgPD0gKF9iKTsgKytpKQojZGVmaW5lIEZPUkQoaSxhLGIpICAgICBmb3IgKGludCBpID0gKGEpLCBfYiA9IChiKTsgaSA+PSAoX2IpOyAtLWkpCiNkZWZpbmUgUkVQKGksIG4pICAgICAgICBmb3IgKGludCBpID0gKDApLCBfbiA9IChuKTsgaSA8IF9uOyArK2kpCiNkZWZpbmUgZ2V0Qml0KG1hc2ssaSkgICgoKG1hc2spID4+IChpKSkgJiAoMUxMKSkKI2RlZmluZSBNQVNLKHgpICAgICAgICAgICAgKDFMTCA8PCAoeCkpCiNkZWZpbmUgYWxsb2YoeCkgICAgICAgIGJlZ2luKHgpLCBlbmQoeCkKI2RlZmluZSBlbCAgICAgICAgICAgICAgY291dCA8PCAnXG4nOwoKLy8tLUNvbXBhcmUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4KICAgIGlubGluZSBib29sIG1heGltaXplKFggJngsIGNvbnN0IFkgJnkpeyByZXR1cm4gKHggPCB5KSA/IHggPSB5LCAxIDogMDsgfQoKdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4KICAgIGlubGluZSBib29sIG1pbmltaXplKFggJngsIGNvbnN0IFkgJnkpeyByZXR1cm4gKHggPiB5KSA/IHggPSB5LCAxIDogMDsgfQoKLy8tLVByb2Nlc3MtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vI2RlZmluZSBpbnQgICAgICAgICAgICAgbG9uZyBsb25nCgp0eXBlZGVmIHBhaXIgPGludCwgaW50PiBwaWk7CiNkZWZpbmUgZmkgICAgICAgICAgICAgIGZpcnN0CiNkZWZpbmUgc2UgICAgICAgICAgICAgIHNlY29uZAoKY29uc3RleHByIGludCBNQVhOID0gMTYwMDE2OwppbnQgbiwgcTsKdmVjdG9yIDxpbnQ+IGFkaltNQVhOXTsKCm5hbWVzcGFjZSBzdWJ0YXNrMgp7CiAgICB2b2lkIHNvbHZlKHZvaWQpCiAgICB7CiAgICAgICAgaW50IExHID0gX19sZyhuKTsKICAgICAgICB2ZWN0b3IgPGludD4gaChuICsgMSwgMCk7CiAgICAgICAgdmVjdG9yIDx2ZWN0b3I8aW50Pj4gcGFyKG4gKyAxLCB2ZWN0b3IgPGludD4gKExHICsgMSwgMCkpOwoKICAgICAgICBmdW5jdGlvbiA8dm9pZChpbnQsIGludCwgYm9vbCk+IGRmcyA9IFsmXShpbnQgdSwgaW50IHAsIGJvb2wgb2spCiAgICAgICAgewogICAgICAgICAgICBpZiAob2spCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHBhclt1XVswXSA9IHA7CiAgICAgICAgICAgICAgICBGT1IoaSwgMSwgTEcpIHBhclt1XVtpXSA9IHBhcltwYXJbdV1baSAtIDFdXVtpIC0gMV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciAoaW50IHYgOiBhZGpbdV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmICh2ID09IHApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgaFt2XSA9IGhbdV0gKyAxOwogICAgICAgICAgICAgICAgZGZzKHYsIHUsIG9rKTsKICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIGZ1bmN0aW9uIDxpbnQoaW50LCBpbnQpPiBsY2EgPSBbJl0oaW50IHUsIGludCB2KQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGhbdV0gPCBoW3ZdKSBzd2FwKHUsIHYpOwoKICAgICAgICAgICAgZm9yIChpbnQgZCA9IGhbdV0gLSBoW3ZdLCBueHQ7IGQ7IGQgXj0gTUFTSyhueHQpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBueHQgPSAzMSAtIF9fYnVpbHRpbl9jbHooZCk7CiAgICAgICAgICAgICAgICB1ID0gcGFyW3VdW254dF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHUgPT0gdikgcmV0dXJuIHU7CgogICAgICAgICAgICBGT1JEKGksIExHLCAwKSBpZiAocGFyW3VdW2ldICE9IHBhclt2XVtpXSkgdSA9IHBhclt1XVtpXSwgdiA9IHBhclt2XVtpXTsKICAgICAgICAgICAgcmV0dXJuIHBhclt1XVswXTsKICAgICAgICB9OwoKICAgICAgICBpbnQgcm9vdCA9IDAsIEQgPSAwOwogICAgICAgIGRmcygxLCAwLCAwKTsKICAgICAgICBGT1IodSwgMSwgbikKICAgICAgICB7CiAgICAgICAgICAgIGlmIChtYXhpbWl6ZShELCBoW3VdKSkgcm9vdCA9IHU7CiAgICAgICAgICAgIGhbdV0gPSAwOwogICAgICAgIH0KICAgICAgICBkZnMocm9vdCwgMCwgMSk7CiAgICAgICAgRk9SKHUsIDEsIG4pIG1heGltaXplKEQsIGhbdV0pOwoKICAgICAgICB2ZWN0b3IgPHBhaXI8aW50LGludD4+IG9yZDsKCiAgICAgICAgRk9SKHUsIDEsIG4pIEZPUih2LCAxLCBuKQogICAgICAgIGlmICh1ID09IHYpIGNvbnRpbnVlOwogICAgICAgIGVsc2UgaWYgKGhbdV0gKyBoW3ZdIC0gMiAqIGhbbGNhKHUsIHYpXSA9PSBEKSBvcmQuZW1wbGFjZV9iYWNrKHUsIHYpOwoKICAgICAgICBjb3V0IDw8IG9yZC5zaXplKCkgPDwgJ1xuJzsKICAgICAgICBzb3J0KGFsbG9mKG9yZCkpOwoKICAgICAgICB3aGlsZSAocS0tKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHBvczsgY2luID4+IHBvczsKICAgICAgICAgICAgaWYgKHBvcyA+IG9yZC5zaXplKCkpIGNvdXQgPDwgIjAgMFxuIjsKICAgICAgICAgICAgZWxzZSBjb3V0IDw8IG9yZFtwb3MgLSAxXS5maSA8PCAnICcgPDwgb3JkW3BvcyAtIDFdLnNlIDw8ICdcbic7CiAgICAgICAgfQogICAgfQp9CgpzaWduZWQgbWFpbih2b2lkKQp7CiAgICBjaW4udGllKG51bGxwdHIpLT5zeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLmV4Y2VwdGlvbnMoY2luLmZhaWxiaXQpOwoKICAgICNkZWZpbmUgdGFzayAiQkFJMyIKICAgIGlmIChmb3Blbih0YXNrIi5JTlAiLCAiciIpKQogICAgewogICAgICAgZnJlb3Blbih0YXNrIi5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgIGZyZW9wZW4odGFzayIuT1VUIiwgInciLCBzdGRvdXQpOwogICAgfQogICAgLy8tLU9wZW5GaWxlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIGludCBUOyBjaW4gPj4gVDsKICAgIHdoaWxlIChULS0pCiAgICB7CiAgICAgICAgY2luID4+IG4gPj4gcTsKICAgICAgICBGT1IodSwgMSwgbikgYWRqW3VdLmNsZWFyKCk7CiAgICAgICAgRk9SKGksIDIsIG4pCiAgICAgICAgewogICAgICAgICAgICBpbnQgdSwgdjsgY2luID4+IHUgPj4gdjsKICAgICAgICAgICAgYWRqW3VdLmVtcGxhY2VfYmFjayh2KTsKICAgICAgICAgICAgYWRqW3ZdLmVtcGxhY2VfYmFjayh1KTsKICAgICAgICB9CgogICAgICAgIHN1YnRhc2syOjpzb2x2ZSgpOwogICAgfQoKICAgIGNlcnIgPDwgKDEuMCAqIGNsb2NrKCkgLyBDTE9DS1NfUEVSX1NFQyk7CiAgICByZXR1cm4gMDsKfQo=