#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=20000+10;
int pa[maxn],d[maxn];
int findset(int x){
if(pa[x]!=x){
int root=findset(pa[x]);
d[x]+=d[pa[x]];
return pa[x]=root;
}else return x;
}
int main(){
int T;
scanf("%d",&T);
while(T--){
int n,u,v;
char cmd;
scanf("%d",&n);
for(int i=1;i<=n;i++){pa[i]=i;d[i]=0;}
while(scanf("%c",&cmd)&&cmd!='O'){
if(cmd=='E'){scanf("%d",&u);findset(u);printf("%d\n",d[u]);}
if(cmd=='I'){scanf("%d%d",&u,&v);pa[u]=v;d[u]=abs(u-v)%1000;}
}
}
return 0;
}
#include<algorithm>
using namespace std;
const int maxn=20000+10;
int pa[maxn],d[maxn];
int findset(int x){
if(pa[x]!=x){
int root=findset(pa[x]);
d[x]+=d[pa[x]];
return pa[x]=root;
}else return x;
}
int main(){
int T;
scanf("%d",&T);
while(T--){
int n,u,v;
char cmd;
scanf("%d",&n);
for(int i=1;i<=n;i++){pa[i]=i;d[i]=0;}
while(scanf("%c",&cmd)&&cmd!='O'){
if(cmd=='E'){scanf("%d",&u);findset(u);printf("%d\n",d[u]);}
if(cmd=='I'){scanf("%d%d",&u,&v);pa[u]=v;d[u]=abs(u-v)%1000;}
}
}
return 0;
}