voiduio(int x, int y) { int fx = find(x), fy = find(y); if (fx != fy) fa[fy] = fx; return ; }
intmain() { cin >> n >> m; for (int i = 1; i <= n; i++) fa[i] = i; for (int i = 1; i <= m; i++) { cin >> type >> x >> y; if (type == 1) uio(x, y); else if (find(x) == find(y)) cout << "Y" << endl; else cout << "N" << endl; } return0; }
voidadd(int p, int x) { while (p <= n) bit[p] += x, p += lowbit(p); }
intsum(int p) { int ans = 0; while (p) ans += bit[p], p -= lowbit(p); return ans; }
intmain() { cin >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i], add(i, a[i]); for (int i = 1; i <= m; i++) { int type, x, y; cin >> type >> x >> y; if (type == 1) add(x, y); else cout << sum(y) - sum(x - 1) << endl; } return0; }