import sys def main(): input = sys.stdin.read().split() idx = 0 N = int(input[idx]); idx += 1 Q = int(input[idx]); idx += 1 parent = list(range(N + 1)) # 1-based indexing diff = [0] * (N + 1) add = [0] * (N + 1) rank = [1] * (N + 1) def find(u): path = [] while parent[u] != u: path.append(u) u = parent[u] for v in reversed(path): orig_parent = parent[v] parent[v] = u diff[v] += diff[orig_parent] return u for _ in range(Q): T = int(input[idx]); idx += 1 A = int(input[idx]); idx += 1 B = int(input[idx]); idx += 1 if T == 1: ra = find(A) rb = find(B) if ra == rb: continue if rank[ra] < rank[rb]: ra, rb = rb, ra parent[rb] = ra diff[rb] = add[rb] - add[ra] if rank[ra] == rank[rb]: rank[ra] += 1 elif T == 2: ra = find(A) add[ra] += B else: ra = find(A) print(diff[A] + add[ra]) if __name__ == '__main__': main()