#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
// - Đây là một bài Educational
// - Gọi lca(u, v, root) là lca của 2 đỉnh u, v khi gốc của cây là root
// - Ta có lca(u, v, root) = đỉnh sâu nhất trong 3 đỉnh lca(u, v, 1), lca(u, root, 1), lca(v, root, 1)
// - Cũng có thể chứng minh qua việc liệt kê ra một số trường hợp trên giấy với cây nhỏ:
// u và v cùng thuộc cây con gốc root, chỉ u hoặc v thuộc cây con gốc root, u và v cùng nằm ngoài cây con gốc root.
// - Đặc biệt trong 3 đỉnh đã nêu thì sẽ có ít nhất 2 đỉnh trùng nhau nên ta có thể viết ngắn gọn lại kết quả như sau:
// lca(u, v, root) = lca(u, v, 1) ^ lca(u, root, 1) ^ lca(v, root, 1)
const int N = 1e5 + 5;
const int LOG = 17;
int n, q;
vector<int> adj[N];
int up[LOG][N];
int tin[N], tout[N], timer;
void reset() {
for (int u = 1; u <= n; u++) {
adj[u].clear();
}
}
void dfs(int u, int p) {
tin[u] = ++timer;
up[0][u] = p;
for (int i = 1; i < LOG; i++) {
up[i][u] = up[i - 1][up[i - 1][u]];
}
for (int v : adj[u]) {
if (v == p) continue;
dfs(v, u);
}
tout[u] = timer;
}
bool isAncestor(int u, int v) {
return (tin[u] <= tin[v] && tout[v] <= tout[u]);
}
// lca của 2 đỉnh u, v với gốc là 1
int lca(int u, int v) {
if (isAncestor(u, v)) return u;
if (isAncestor(v, u)) return v;
for (int i = LOG - 1; i >= 0; i--) {
if (!isAncestor(up[i][u], v)) {
u = up[i][u];
}
}
return up[0][u];
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
while (cin >> n) {
if (n == 0) break;
reset();
for (int i = 0; i < n - 1; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
cin >> q;
int root = 1;
timer = 0;
dfs(1, 1);
while (q--) {
char type; cin >> type;
if (type == '!') {
int nroot; cin >> nroot;
root = nroot;
}
else {
int u, v;
cin >> u >> v;
int lca_uv = lca(u, v) ^ lca(u, root) ^ lca(v, root);
cout << lca_uv << '\n';
}
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKLy8gLSDEkMOieSBsw6AgbeG7mXQgYsOgaSBFZHVjYXRpb25hbAovLyAtIEfhu41pIGxjYSh1LCB2LCByb290KSBsw6AgbGNhIGPhu6dhIDIgxJHhu4luaCB1LCB2IGtoaSBn4buRYyBj4bunYSBjw6J5IGzDoCByb290Ci8vIC0gVGEgY8OzIGxjYSh1LCB2LCByb290KSA9IMSR4buJbmggc8OidSBuaOG6pXQgdHJvbmcgMyDEkeG7iW5oIGxjYSh1LCB2LCAxKSwgbGNhKHUsIHJvb3QsIDEpLCBsY2Eodiwgcm9vdCwgMSkgCi8vIC0gQ8WpbmcgY8OzIHRo4buDIGNo4bupbmcgbWluaCBxdWEgdmnhu4djIGxp4buHdCBrw6ogcmEgbeG7mXQgc+G7kSB0csaw4budbmcgaOG7o3AgdHLDqm4gZ2nhuqV5IHbhu5tpIGPDonkgbmjhu486IAovLyAgIHUgdsOgIHYgY8O5bmcgdGh14buZYyBjw6J5IGNvbiBn4buRYyByb290LCBjaOG7iSB1IGhv4bq3YyB2IHRodeG7mWMgY8OieSBjb24gZ+G7kWMgcm9vdCwgdSB2w6AgdiBjw7luZyBu4bqxbSBuZ2/DoGkgY8OieSBjb24gZ+G7kWMgcm9vdC4KLy8gLSDEkOG6t2MgYmnhu4d0IHRyb25nIDMgxJHhu4luaCDEkcOjIG7DqnUgdGjDrCBz4bq9IGPDsyDDrXQgbmjhuqV0IDIgxJHhu4luaCB0csO5bmcgbmhhdSBuw6puIHRhIGPDsyB0aOG7gyB2aeG6v3Qgbmfhuq9uIGfhu41uIGzhuqFpIGvhur90IHF14bqjIG5oxrAgc2F1OgovLyAgIGxjYSh1LCB2LCByb290KSA9IGxjYSh1LCB2LCAxKSBeIGxjYSh1LCByb290LCAxKSBeIGxjYSh2LCByb290LCAxKQpjb25zdCBpbnQgTiA9IDFlNSArIDU7IApjb25zdCBpbnQgTE9HID0gMTc7ICAKCmludCBuLCBxOyAgIAp2ZWN0b3I8aW50PiBhZGpbTl07IAoKaW50IHVwW0xPR11bTl07ICAgCmludCB0aW5bTl0sIHRvdXRbTl0sIHRpbWVyOyAgCgp2b2lkIHJlc2V0KCkgewoJZm9yIChpbnQgdSA9IDE7IHUgPD0gbjsgdSsrKSB7CgkJYWRqW3VdLmNsZWFyKCk7ICAKCX0KfQoKdm9pZCBkZnMoaW50IHUsIGludCBwKSB7Cgl0aW5bdV0gPSArK3RpbWVyOyAgIAoJdXBbMF1bdV0gPSBwOyAgIAoJZm9yIChpbnQgaSA9IDE7IGkgPCBMT0c7IGkrKykgewoJCXVwW2ldW3VdID0gdXBbaSAtIDFdW3VwW2kgLSAxXVt1XV07IAoJfQoJZm9yIChpbnQgdiA6IGFkalt1XSkgewoJCWlmICh2ID09IHApIGNvbnRpbnVlOyAKCQlkZnModiwgdSk7IAoJfQoJdG91dFt1XSA9IHRpbWVyOyAgCn0KCmJvb2wgaXNBbmNlc3RvcihpbnQgdSwgaW50IHYpIHsKCXJldHVybiAodGluW3VdIDw9IHRpblt2XSAmJiB0b3V0W3ZdIDw9IHRvdXRbdV0pOwp9CgovLyBsY2EgY+G7p2EgMiDEkeG7iW5oIHUsIHYgduG7m2kgZ+G7kWMgbMOgIDEKaW50IGxjYShpbnQgdSwgaW50IHYpIHsKCWlmIChpc0FuY2VzdG9yKHUsIHYpKSByZXR1cm4gdTsgIAoJaWYgKGlzQW5jZXN0b3IodiwgdSkpIHJldHVybiB2OyAgCglmb3IgKGludCBpID0gTE9HIC0gMTsgaSA+PSAwOyBpLS0pIHsKCQlpZiAoIWlzQW5jZXN0b3IodXBbaV1bdV0sIHYpKSB7CgkJCXUgPSB1cFtpXVt1XTsgCgkJfQoJfQoJcmV0dXJuIHVwWzBdW3VdOyAKfQoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJd2hpbGUgKGNpbiA+PiBuKSB7CgkJaWYgKG4gPT0gMCkgYnJlYWs7IAoJCXJlc2V0KCk7ICAgCgkKCQlmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyBpKyspIHsKCQkJaW50IHUsIHY7IAoJCQljaW4gPj4gdSA+PiB2OyAKCQkJYWRqW3VdLnB1c2hfYmFjayh2KTsKCQkJYWRqW3ZdLnB1c2hfYmFjayh1KTsgCgkJfQoJCWNpbiA+PiBxOyAKCgkJaW50IHJvb3QgPSAxOyAgCgkJdGltZXIgPSAwOyAgCgkJZGZzKDEsIDEpOyAKCgkJd2hpbGUgKHEtLSkgewoJCQljaGFyIHR5cGU7IGNpbiA+PiB0eXBlOyAKCQkJaWYgKHR5cGUgPT0gJyEnKSB7CgkJCQlpbnQgbnJvb3Q7IGNpbiA+PiBucm9vdDsgCgkJCQlyb290ID0gbnJvb3Q7IAoJCQl9CgkJCWVsc2UgewoJCQkJaW50IHUsIHY7IAoJCQkJY2luID4+IHUgPj4gdjsgIAoJCQkJaW50IGxjYV91diA9IGxjYSh1LCB2KSBeIGxjYSh1LCByb290KSBeIGxjYSh2LCByb290KTsgCgkJCQljb3V0IDw8IGxjYV91diA8PCAnXG4nOyAKCQkJfQoJCX0KCX0KfQk=