#include <bits/stdc++.h> #include <iostream> #include <cstring> #include <stdio.h> using namespace std; int A[20010]; int top[20010]; int TT = 0; void Link(int x, int y) { A[x] = abs(x-y)%1000; top[x] = y; } int Get(int x) { if(top[x] == x) { TT = x; //每次找到根节点 return A[x]; } A[x] += Get(top[x]); top[x] = TT; //更新根节点 return A[x]; } int main(void) { freopen("G:\\data.txt", "r", stdin); int T; cin >> T; while(T--) { int N; char cc; scanf("%d", &N); for(int i = 1; i <= N; i++) { top[i] = i; A[i] = 0; } while(cin >> cc, cc != 'O') //while(scanf("%c", &cc), cc != 'O') { if(cc == 'E') { int c1; scanf("%d", &c1); printf("%d\n", Get(c1)); }else if(cc == 'I') { int c1, c2; scanf("%d%d", &c1, &c2); Link(c1, c2); } } } return 0; }