#include #define rep(i,n) for(int i = 0; i < (n); ++i) #define drep(i,n) for(int i = (n)-1; i >= 0; --i) #define srep(i,s,t) for (int i = s; i < t; ++i) using namespace std; typedef long long int ll; typedef pair P; #define yn {puts("Yes");}else{puts("No");} const int MAX_N = 500100; int par[MAX_N]; // 親 int rank_[MAX_N]; // 木の深さ int val[MAX_N]; // n要素で初期化 void UFinit(){ for(int i=0;i> n >> q; rep(i,q){ int t, a, b; cin >> t >> a >> b; if(t == 1){ if(same(a,b))continue; unite(a,b); }else if(t == 2){ int x = find(a); val[x] += b; }else if(t == 3){ int ans = calc(a); cout << ans << endl; } } return 0; }