#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define ull unsigned long long
#define iiii tuple<int,int,int,ll>
#define iii tuple<int,int,ll>
#define ii pair<int,int>
#define fi first
#define se second
using namespace std;
const ll INF=0x3f3f3f3f3f3f3f3fLL;
const ll MOD=1e9+7;
const int MAXN=1e5+5;
int n, q;
int root[MAXN], sz[MAXN], val[MAXN];
int getroot(int s){
if (s==root[s]) return s;
int p=root[s];
int r=getroot(p);
val[s]+=val[p];
return root[s]=r;
}
void uni(int a, int b){
int rx=getroot(a); int ry=getroot(b);
if (rx==ry) return;
if (sz[rx]<sz[ry]) swap(rx,ry);
sz[rx]+=sz[ry];
root[ry]=rx;
val[ry]-=val[rx];
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> n >> q;
for (int i=1;i<=n;i++){
sz[i]=1;
root[i]=i;
}
for (int i=0;i<q;i++){
string a;
cin >> a;
if (a=="join"){
int b, c;
cin >> b >> c;
uni(b,c);
}
if (a=="get"){
int b;
cin >> b;
getroot(b);
cout << val[b] << '\n';
}
if (a=="add"){
int b,c;
cin >> b >> c;
val[getroot(b)]+=c;
}
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBsZCBsb25nIGRvdWJsZQojZGVmaW5lIHVsbCB1bnNpZ25lZCBsb25nIGxvbmcKI2RlZmluZSBpaWlpIHR1cGxlPGludCxpbnQsaW50LGxsPgojZGVmaW5lIGlpaSB0dXBsZTxpbnQsaW50LGxsPgojZGVmaW5lIGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBsbCBJTkY9MHgzZjNmM2YzZjNmM2YzZjNmTEw7CmNvbnN0IGxsIE1PRD0xZTkrNzsKY29uc3QgaW50IE1BWE49MWU1KzU7CmludCBuLCBxOwppbnQgcm9vdFtNQVhOXSwgc3pbTUFYTl0sIHZhbFtNQVhOXTsKaW50IGdldHJvb3QoaW50IHMpewogICAgaWYgKHM9PXJvb3Rbc10pIHJldHVybiBzOwogICAgaW50IHA9cm9vdFtzXTsKICAgIGludCByPWdldHJvb3QocCk7CiAgICB2YWxbc10rPXZhbFtwXTsKICAgIHJldHVybiByb290W3NdPXI7Cn0Kdm9pZCB1bmkoaW50IGEsIGludCBiKXsKICAgIGludCByeD1nZXRyb290KGEpOyBpbnQgcnk9Z2V0cm9vdChiKTsKICAgIGlmIChyeD09cnkpIHJldHVybjsKICAgIGlmIChzeltyeF08c3pbcnldKSBzd2FwKHJ4LHJ5KTsKICAgIHN6W3J4XSs9c3pbcnldOwogICAgcm9vdFtyeV09cng7CiAgICB2YWxbcnldLT12YWxbcnhdOwp9CmludCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7IGNvdXQudGllKE5VTEwpOwogICAgY2luID4+IG4gPj4gcTsKICAgIGZvciAoaW50IGk9MTtpPD1uO2krKyl7CiAgICAgICAgc3pbaV09MTsKICAgICAgICByb290W2ldPWk7CiAgICB9CiAgICBmb3IgKGludCBpPTA7aTxxO2krKyl7CiAgICAgICAgc3RyaW5nIGE7CiAgICAgICAgY2luID4+IGE7CiAgICAgICAgaWYgKGE9PSJqb2luIil7CiAgICAgICAgICAgIGludCBiLCBjOwogICAgICAgICAgICBjaW4gPj4gYiA+PiBjOwogICAgICAgICAgICB1bmkoYixjKTsKICAgICAgICB9CiAgICAgICAgaWYgKGE9PSJnZXQiKXsKICAgICAgICAgICAgaW50IGI7CiAgICAgICAgICAgIGNpbiA+PiBiOwogICAgICAgICAgICBnZXRyb290KGIpOwogICAgICAgICAgICBjb3V0IDw8IHZhbFtiXSA8PCAnXG4nOwogICAgICAgIH0KICAgICAgICBpZiAoYT09ImFkZCIpewogICAgICAgICAgICBpbnQgYixjOwogICAgICAgICAgICBjaW4gPj4gYiA+PiBjOwogICAgICAgICAgICB2YWxbZ2V0cm9vdChiKV0rPWM7CiAgICAgICAgfQogICAgfQp9