#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
typedef long long ll;
typedef unsigned long long ull;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int, int> pi;
typedef pair<ll, ll> pl;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> orderedSet;
#define read freopen("in.c", "r", stdin)
#define write freopen("out.c", "w", stdout)
#define all(a) a.begin(), a.end()
#define bye exit(0)
#define mp make_pair
#define ff first
#define ss second
#define L(x) ((x) << 1)
#define R(x) ((x) << 1 | 1)
#define SZ(a) (ll)(a).size()
#define pb push_back
#define eb emplace_back
#define eps 1e-9
#define inf (1000000000)
#define infl (1000000000000000000LL)
#define cs(p) printf("Case %d:", (p)++)
#define ptc(c) putchar(c)
#define gtc() getchar()
#define nl puts("")
#define sp printf(" ")
#define out(a) printf("%lld", (ll)(a))
#define SET(a, x) memset((a), x, sizeof(a))
#define dbg(x) cout << "--- " << #x << " = " << (x) << '\n'
ll bgm(ll a, ll b, ll m) {
b = (b == -1) ? (m - 2) : b;
a %= m;
ll rem = 1;
while(b != 0) {
if(b&1) {
rem = (rem * a) % m;
}
a = (a * a) % m;
b >>= 1;
}
return rem;
}
inline ll in() {
ll a;
assert(scanf("%lld", &a) != EOF);
return a;
}
const int MAX = 100000 + 5;
const int LEN = 50;
const ll MOD = 1000000007;
int n;
int u, v;
vi G[MAX];
int siz[MAX], nxt[MAX], st[MAX], lev[MAX], par[MAX];
ll T[4 * MAX];
int ptr;
int q;
char c;
void dfs(int u, int p, int lv) {
siz[u] = 1, lev[u] = lv, par[u] = p;
for(int v : G[u]) {
G[v].erase(find(all(G[v]), u));
}
for(int &v : G[u]) {
dfs(v, u, lv + 1);
siz[u] += siz[v];
if(siz[v] > siz[G[u][0]]) {
swap(v, G[u][0]);
}
}
}
void hld(int u) {
st[u] = ++ptr;
for(int v : G[u]) {
nxt[v] = G[u][0] == v ? nxt[u] : v;
hld(v);
}
}
void upd(int i, int l, int r, int a, int v) {
if(a < l or a > r) {
return ;
}
if(l == r) {
T[i] += v;
return ;
}
int mid = (l + r) / 2;
upd(L(i), l, mid, a, v);
upd(R(i), mid + 1, r, a, v);
T[i] = max(T[L(i)], T[R(i)]);
}
ll get(int i, int l, int r, int a, int b) {
if(r < a or b < l) {
return 0;
}
if(a <= l and r <= b) {
return T[i];
}
int mid = (l + r) / 2;
return max(get(L(i), l, mid, a, b), get(R(i), mid + 1, r, a, b));
}
ll query(int u, int v) {
ll ret = 0;
while(nxt[u] != nxt[v]) {
if(lev[nxt[u]] > lev[nxt[v]]) {
swap(u, v);
}
ret = max(ret, get(1, 1, ptr, st[nxt[v]], v));
v = par[nxt[v]];
}
if(lev[u] > lev[v]) {
swap(u, v);
}
ret = max(ret, get(1, 1, ptr, st[u], st[v]));
return ret;
}
int main() {
n = in();
for(int i = 1; i < n; i++) {
u = in(), v = in();
G[u].pb(v);
G[v].pb(u);
}
dfs(1, -1, 0);
hld(1);
q = in();
while(q--) {
scanf(" %c %d %d", &c, &u, &v);
if(c == 'I') {
upd(1, 1, ptr, st[u], v);
}
else {
out(query(u, v)), nl;
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwoKdHlwZWRlZiBsb25nIGxvbmcgICAgICAgICAgICBsbDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgICB1bGw7CnR5cGVkZWYgdmVjdG9yPGludD4gICAgICAgICAgdmk7CnR5cGVkZWYgdmVjdG9yPGxsPiAgICAgICAgICAgdmw7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gICAgICAgcGk7CnR5cGVkZWYgcGFpcjxsbCwgbGw+ICAgICAgICAgcGw7CnR5cGVkZWYgdmVjdG9yPHBpPiAgICAgICAgICAgdnBpOwp0eXBlZGVmIHZlY3RvcjxwbD4gICAgICAgICAgIHZwbDsKdHlwZWRlZiB0cmVlPGxsLCBudWxsX3R5cGUsIGxlc3M8bGw+LCByYl90cmVlX3RhZywgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPiBvcmRlcmVkU2V0OwoKI2RlZmluZSByZWFkICAgICAgICBmcmVvcGVuKCJpbi5jIiwgInIiLCBzdGRpbikKI2RlZmluZSB3cml0ZSAgICAgICBmcmVvcGVuKCJvdXQuYyIsICJ3Iiwgc3Rkb3V0KQojZGVmaW5lIGFsbChhKSAgICAgIGEuYmVnaW4oKSwgYS5lbmQoKQojZGVmaW5lIGJ5ZSAgICAgICAgIGV4aXQoMCkKI2RlZmluZSBtcCAgICAgICAgICBtYWtlX3BhaXIKI2RlZmluZSBmZiAgICAgICAgICBmaXJzdAojZGVmaW5lIHNzICAgICAgICAgIHNlY29uZAojZGVmaW5lIEwoeCkgICAgICAgICgoeCkgPDwgMSkKI2RlZmluZSBSKHgpICAgICAgICAoKHgpIDw8IDEgfCAxKQojZGVmaW5lIFNaKGEpICAgICAgIChsbCkoYSkuc2l6ZSgpCiNkZWZpbmUgcGIgICAgICAgICAgcHVzaF9iYWNrCiNkZWZpbmUgZWIgICAgICAgICAgZW1wbGFjZV9iYWNrCiNkZWZpbmUgZXBzICAgICAgICAgMWUtOQojZGVmaW5lIGluZiAgICAgICAgICgxMDAwMDAwMDAwKQojZGVmaW5lIGluZmwgICAgICAgICgxMDAwMDAwMDAwMDAwMDAwMDAwTEwpCiNkZWZpbmUgY3MocCkgICAgICAgcHJpbnRmKCJDYXNlICVkOiIsIChwKSsrKQojZGVmaW5lIHB0YyhjKSAgICAgIHB1dGNoYXIoYykKI2RlZmluZSBndGMoKSAgICAgICBnZXRjaGFyKCkKI2RlZmluZSBubCAgICAgICAgICBwdXRzKCIiKQojZGVmaW5lIHNwICAgICAgICAgIHByaW50ZigiICIpCiNkZWZpbmUgb3V0KGEpICAgICAgcHJpbnRmKCIlbGxkIiwgKGxsKShhKSkKI2RlZmluZSBTRVQoYSwgeCkgICBtZW1zZXQoKGEpLCB4LCBzaXplb2YoYSkpCiNkZWZpbmUgZGJnKHgpICAgICAgY291dCA8PCAiLS0tICIgPDwgI3ggPDwgIiA9ICIgPDwgKHgpIDw8ICdcbicKCmxsIGJnbShsbCBhLCBsbCBiLCBsbCBtKSB7CiAgICBiID0gKGIgPT0gLTEpID8gKG0gLSAyKSA6IGI7CiAgICBhICU9IG07CiAgICBsbCByZW0gPSAxOwogICAgd2hpbGUoYiAhPSAwKSB7CiAgICAgICAgaWYoYiYxKSB7CiAgICAgICAgICAgIHJlbSA9IChyZW0gKiBhKSAlIG07CiAgICAgICAgfQogICAgICAgIGEgPSAoYSAqIGEpICUgbTsKICAgICAgICBiID4+PSAxOwogICAgfQogICAgcmV0dXJuIHJlbTsKfQoKaW5saW5lIGxsIGluKCkgewogICAgbGwgYTsKICAgIGFzc2VydChzY2FuZigiJWxsZCIsICZhKSAhPSBFT0YpOwogICAgcmV0dXJuIGE7Cn0KCmNvbnN0IGludCBNQVggPSAxMDAwMDAgKyA1Owpjb25zdCBpbnQgTEVOID0gNTA7CmNvbnN0IGxsIE1PRCA9IDEwMDAwMDAwMDc7CgppbnQgbjsKaW50IHUsIHY7Cgp2aSBHW01BWF07CgppbnQgc2l6W01BWF0sIG54dFtNQVhdLCBzdFtNQVhdLCBsZXZbTUFYXSwgcGFyW01BWF07CgpsbCBUWzQgKiBNQVhdOwoKaW50IHB0cjsKCmludCBxOwoKY2hhciBjOwoKdm9pZCBkZnMoaW50IHUsIGludCBwLCBpbnQgbHYpIHsKICAgIHNpelt1XSA9IDEsIGxldlt1XSA9IGx2LCBwYXJbdV0gPSBwOwogICAgZm9yKGludCB2IDogR1t1XSkgewogICAgICAgIEdbdl0uZXJhc2UoZmluZChhbGwoR1t2XSksIHUpKTsKICAgIH0KICAgIGZvcihpbnQgJnYgOiBHW3VdKSB7CiAgICAgICAgZGZzKHYsIHUsIGx2ICsgMSk7CiAgICAgICAgc2l6W3VdICs9IHNpelt2XTsKICAgICAgICBpZihzaXpbdl0gPiBzaXpbR1t1XVswXV0pIHsKICAgICAgICAgICAgc3dhcCh2LCBHW3VdWzBdKTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgaGxkKGludCB1KSB7CiAgICBzdFt1XSA9ICsrcHRyOwogICAgZm9yKGludCB2IDogR1t1XSkgewogICAgICAgIG54dFt2XSA9IEdbdV1bMF0gPT0gdiA/IG54dFt1XSA6IHY7CiAgICAgICAgaGxkKHYpOwogICAgfQp9Cgp2b2lkIHVwZChpbnQgaSwgaW50IGwsIGludCByLCBpbnQgYSwgaW50IHYpIHsKICAgIGlmKGEgPCBsIG9yIGEgPiByKSB7CiAgICAgICAgcmV0dXJuIDsKICAgIH0KICAgIGlmKGwgPT0gcikgewogICAgICAgIFRbaV0gKz0gdjsKICAgICAgICByZXR1cm4gOwogICAgfQogICAgaW50IG1pZCA9IChsICsgcikgLyAyOwogICAgdXBkKEwoaSksIGwsIG1pZCwgYSwgdik7CiAgICB1cGQoUihpKSwgbWlkICsgMSwgciwgYSwgdik7CiAgICBUW2ldID0gbWF4KFRbTChpKV0sIFRbUihpKV0pOwp9CgpsbCBnZXQoaW50IGksIGludCBsLCBpbnQgciwgaW50IGEsIGludCBiKSB7CiAgICBpZihyIDwgYSBvciBiIDwgbCkgewogICAgICAgIHJldHVybiAwOwogICAgfQogICAgaWYoYSA8PSBsIGFuZCByIDw9IGIpIHsKICAgICAgICByZXR1cm4gVFtpXTsKICAgIH0KICAgIGludCBtaWQgPSAobCArIHIpIC8gMjsKICAgIHJldHVybiBtYXgoZ2V0KEwoaSksIGwsIG1pZCwgYSwgYiksIGdldChSKGkpLCBtaWQgKyAxLCByLCBhLCBiKSk7Cn0KCmxsIHF1ZXJ5KGludCB1LCBpbnQgdikgewogICAgbGwgcmV0ID0gMDsKICAgIHdoaWxlKG54dFt1XSAhPSBueHRbdl0pIHsKICAgICAgICBpZihsZXZbbnh0W3VdXSA+IGxldltueHRbdl1dKSB7CiAgICAgICAgICAgIHN3YXAodSwgdik7CiAgICAgICAgfQogICAgICAgIHJldCA9IG1heChyZXQsIGdldCgxLCAxLCBwdHIsIHN0W254dFt2XV0sIHYpKTsKICAgICAgICB2ID0gcGFyW254dFt2XV07CiAgICB9CiAgICBpZihsZXZbdV0gPiBsZXZbdl0pIHsKICAgICAgICBzd2FwKHUsIHYpOwogICAgfQogICAgcmV0ID0gbWF4KHJldCwgZ2V0KDEsIDEsIHB0ciwgc3RbdV0sIHN0W3ZdKSk7CiAgICByZXR1cm4gcmV0Owp9CgppbnQgbWFpbigpIHsKICAgIG4gPSBpbigpOwogICAgZm9yKGludCBpID0gMTsgaSA8IG47IGkrKykgewogICAgICAgIHUgPSBpbigpLCB2ID0gaW4oKTsKICAgICAgICBHW3VdLnBiKHYpOwogICAgICAgIEdbdl0ucGIodSk7CiAgICB9CgogICAgZGZzKDEsIC0xLCAwKTsKICAgIGhsZCgxKTsKCiAgICBxID0gaW4oKTsKICAgIHdoaWxlKHEtLSkgewogICAgICAgIHNjYW5mKCIgJWMgJWQgJWQiLCAmYywgJnUsICZ2KTsKICAgICAgICBpZihjID09ICdJJykgewogICAgICAgICAgICB1cGQoMSwgMSwgcHRyLCBzdFt1XSwgdik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBvdXQocXVlcnkodSwgdikpLCBubDsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQo=