#include #include using namespace std; typedef long long LL; const int N = 100010, V = 1000000000; struct Node { int l, r; LL sum; }; struct SegTree { int rt, idx; Node seg[100 * N]; void PushUp(int u) { seg[u].sum = seg[seg[u].l].sum + seg[seg[u].r].sum; } void Modify(int& u, int l, int r, int x, LL v) { if (!u) u = ++idx; if (l == r) { seg[u].sum += v; return; } int mid = l + r >> 1; if (x <= mid) Modify(seg[u].l, l, mid, x, v); else Modify(seg[u].r, mid + 1, r, x, v); PushUp(u); } LL Query(int u, int l, int r, int ul, int ur) { if (!u) return 0LL; if (ul <= l && r <= ur) return seg[u].sum; int mid = l + r >> 1; LL ret = 0LL; if (ul <= mid) ret += Query(seg[u].l, l, mid, ul, ur); if (ur > mid) ret += Query(seg[u].r, mid + 1, r, ul, ur); return ret; } }; SegTree sgt; int n; int main() { // freopen("assign.in", "r", stdin); // freopen("assign.out", "w", stdout); scanf("%d", &n); LL ans = 0LL; while (n--) { int op, x, y; scanf("%d%d%d", &op, &x, &y); if (op == 0) sgt.Modify(sgt.rt, 0, V, x, y); else ans += sgt.Query(sgt.rt, 0, V, x, y); } printf("%lld\n", ans); return 0; }