import math,string,itertools,fractions,heapq,collections,re,array,bisect,sys,random,time,copy,functools



sys.setrecursionlimit(10**7)

inf = 10**20

eps = 1.0 / 10**15

mod = 10**9+7



def LI(): return [int(x) for x in sys.stdin.readline().split()]

def LI_(): return [int(x)-1 for x in sys.stdin.readline().split()]

def LF(): return [float(x) for x in sys.stdin.readline().split()]

def LS(): return sys.stdin.readline().split()

def I(): return int(sys.stdin.readline())

def F(): return float(sys.stdin.readline())

def S(): return input()

def pf(s): return print(s, flush=True)





class Seg():

    def __init__(self, na, default, func):

        if isinstance(na, list):

            n = len(na)

        else:

            n = na

        i = 1

        while 2**i <= n:

            i += 1

        self.D = default

        self.H = i

        self.N = 2**i

        if isinstance(na, list):

            self.A = [default] * (self.N) + na + [default] * (self.N-n)

            for i in range(self.N-1,0,-1):

                self.A[i] = func(self.A[i*2], self.A[i*2+1])

        else:

            self.A = [default] * (self.N*2)

        self.F = func



    def find(self, i):

        return self.A[i + self.N]



    def update(self, i, x):

        i += self.N

        self.A[i] = x

        while i > 1:

            i = i // 2

            self.A[i] = self.merge(self.A[i*2], self.A[i*2+1])



    def merge(self, a, b):

        return self.F(a, b)



    def total(self):

        return self.A[1]



    def query(self, a, b):

        A = self.A

        l = a + self.N

        r = b + self.N

        res = self.D

        while l < r:

            if l % 2 == 1:

                res = self.merge(res, A[l])

                l += 1

            if r % 2 == 1:

                r -= 1

                res = self.merge(res, A[r])

            l >>= 1

            r >>= 1



        return res



def main():

    n,q = LI()

    a = [LI() for _ in range(q)]

    def f(a,b):

        return a + b

    seg = Seg(n+1, 0, f)

    r = []

    for c,x,y in a:

        if c == 0:

            seg.update(x,seg.find(x)+y)

        else:

            r.append(seg.query(x,y+1))



    return '\n'.join(map(str,r))





print(main())

import math,string,itertools,fractions,heapq,collections,re,array,bisect,sys,random,time,copy,functools



sys.setrecursionlimit(10**7)

inf = 10**20

eps = 1.0 / 10**15

mod = 10**9+7



def LI(): return [int(x) for x in sys.stdin.readline().split()]

def LI_(): return [int(x)-1 for x in sys.stdin.readline().split()]

def LF(): return [float(x) for x in sys.stdin.readline().split()]

def LS(): return sys.stdin.readline().split()

def I(): return int(sys.stdin.readline())

def F(): return float(sys.stdin.readline())

def S(): return input()

def pf(s): return print(s, flush=True)



class BIT():

    def __init__(self, n):

        i = 1

        while 2**i <= n:

            i += 1

        self.H = i

        self.N = 2**i

        self.A = [0] * self.N



    def find(self, i):

        r = 0

        while i:

            r += self.A[i]

            i -= i & (i-1) ^ i

        return r



    def update(self, i, x):

        while i < self.N:

            self.A[i] += x

            i += i & (i-1) ^ i



    def query(self, a, b):

        return self.find(b-1) - self.find(a-1)



def main():

    n,q = LI()

    a = [LI() for _ in range(q)]

    b = BIT(n+3)

    r = []

    for c,x,y in a:

        if c == 0:

            b.update(x,y)

        else:

            r.append(b.query(x,y+1))



    return '\n'.join(map(str,r))





print(main())

import math, string, itertools, fractions, heapq, collections, re, array, bisect, sys, random, time, copy, functools

sys.setrecursionlimit(10**7)
inf = 10**20
eps = 1.0 / 10**15
mod = 10**9 + 7


def LI():
    return [int(x) for x in sys.stdin.readline().split()]


def LI_():
    return [int(x) - 1 for x in sys.stdin.readline().split()]


def LF():
    return [float(x) for x in sys.stdin.readline().split()]


def LS():
    return sys.stdin.readline().split()


def I():
    return int(sys.stdin.readline())


def F():
    return float(sys.stdin.readline())


def S():
    return input()


def pf(s):
    return print(s, flush=True)


class Seg:
    def __init__(self, na, default, func):
        if isinstance(na, list):
            n = len(na)
        else:
            n = na
        i = 1
        while 2**i <= n:
            i += 1
        self.D = default
        self.H = i
        self.N = 2**i
        if isinstance(na, list):
            self.A = [default] * (self.N) + na + [default] * (self.N - n)
            for i in range(self.N - 1, 0, -1):
                self.A[i] = func(self.A[i * 2], self.A[i * 2 + 1])
        else:
            self.A = [default] * (self.N * 2)
        self.F = func

    def find(self, i):
        return self.A[i + self.N]

    def update(self, i, x):
        i += self.N
        self.A[i] = x
        while i > 1:
            i = i // 2
            self.A[i] = self.merge(self.A[i * 2], self.A[i * 2 + 1])

    def merge(self, a, b):
        return self.F(a, b)

    def total(self):
        return self.A[1]

    def query(self, a, b):
        A = self.A
        l = a + self.N
        r = b + self.N
        res = self.D
        while l < r:
            if l % 2 == 1:
                res = self.merge(res, A[l])
                l += 1
            if r % 2 == 1:
                r -= 1
                res = self.merge(res, A[r])
            l >>= 1
            r >>= 1
        return res


def main():
    n, q = LI()
    a = [LI() for _ in range(q)]

    def f(a, b):
        return a + b

    seg = Seg(n + 1, 0, f)
    r = []
    for c, x, y in a:
        if c == 0:
            seg.update(x, seg.find(x) + y)
        else:
            r.append(seg.query(x, y + 1))
    return "\n".join(map(str, r))


print(main())

import math, string, itertools, fractions, heapq, collections, re, array, bisect, sys, random, time, copy, functools

sys.setrecursionlimit(10**7)
inf = 10**20
eps = 1.0 / 10**15
mod = 10**9 + 7


def LI():
    return [int(x) for x in sys.stdin.readline().split()]


def LI_():
    return [int(x) - 1 for x in sys.stdin.readline().split()]


def LF():
    return [float(x) for x in sys.stdin.readline().split()]


def LS():
    return sys.stdin.readline().split()


def I():
    return int(sys.stdin.readline())


def F():
    return float(sys.stdin.readline())


def S():
    return input()


def pf(s):
    return print(s, flush=True)


class BIT:
    def __init__(self, n):
        i = 1
        while 2**i <= n:
            i += 1
        self.H = i
        self.N = 2**i
        self.A = [0] * self.N

    def find(self, i):
        r = 0
        while i:
            r += self.A[i]
            i -= i & (i - 1) ^ i
        return r

    def update(self, i, x):
        while i < self.N:
            self.A[i] += x
            i += i & (i - 1) ^ i

    def query(self, a, b):
        return self.find(b - 1) - self.find(a - 1)


def main():
    n, q = LI()
    a = [LI() for _ in range(q)]
    b = BIT(n + 3)
    r = []
    for c, x, y in a:
        if c == 0:
            b.update(x, y)
        else:
            r.append(b.query(x, y + 1))
    return "\n".join(map(str, r))


print(main())

-class Seg: -    def __init__(self, na, default, func): -        if isinstance(na, list): -            n = len(na) -        else: -            n = na +class BIT: +    def __init__(self, n): -        self.D = default -        if isinstance(na, list): -            self.A = [default] * (self.N) + na + [default] * (self.N - n) -            for i in range(self.N - 1, 0, -1): -                self.A[i] = func(self.A[i * 2], self.A[i * 2 + 1]) -        else: -            self.A = [default] * (self.N * 2) -        self.F = func +        self.A = [0] * self.N -        return self.A[i + self.N] +        r = 0 +        while i: +            r += self.A[i] +            i -= i & (i - 1) ^ i +        return r -        i += self.N -        self.A[i] = x -        while i > 1: -            i = i // 2 -            self.A[i] = self.merge(self.A[i * 2], self.A[i * 2 + 1]) - -    def merge(self, a, b): -        return self.F(a, b) - -    def total(self): -        return self.A[1] +        while i < self.N: +            self.A[i] += x +            i += i & (i - 1) ^ i -        A = self.A -        l = a + self.N -        r = b + self.N -        res = self.D -        while l < r: -            if l % 2 == 1: -                res = self.merge(res, A[l]) -                l += 1 -            if r % 2 == 1: -                r -= 1 -                res = self.merge(res, A[r]) -            l >>= 1 -            r >>= 1 -        return res +        return self.find(b - 1) - self.find(a - 1) - -    def f(a, b): -        return a + b - -    seg = Seg(n + 1, 0, f) +    b = BIT(n + 3) -            seg.update(x, seg.find(x) + y) +            b.update(x, y) -            r.append(seg.query(x, y + 1)) +            r.append(b.query(x, y + 1))