// AOJ DSL_2_B Range Sum Query (RSQ)
// 2018.5.5 bal4u

#include <stdio.h>
#include <stdlib.h>

#if 1
#define gc() getchar_unlocked()
#define pc(c) putchar_unlocked(c)
#else
#define gc() getchar()
#define pc(c) putchar(c)
#endif
int in()
{
	int n = 0, c = gc();
	do n = 10*n + (c & 0xf), c = gc(); while (c >= '0');
	return n;
}

void out(int n)
{
	int i;
	char ob[20];

	if (!n) pc('0');
	else {
		i = 0; while (n) ob[i++] = n%10 + '0', n/=10;
		while (i--) pc(ob[i]);
	}
	pc('\n');
}


// Binary Indexed Tree
#define MAX_N  100002
int bit[MAX_N]; int sz;

// i番目の値にvを加算する
void add(int i, int v)
{
    while (i <= sz) {
		bit[i] += v;
		i += (i & -i);
	}
}
 
// bit[0]... bit[i]の合計を得る
int sum(int i)
{
	int s = 0;
     while (i > 0) {
		s += bit[i];
		i -= (i & -i);
	}
    return s;
}


int main()
{
	int n, q, op, x, y, s;

	sz = n = in(), q = in();
	while (q--) {
		op = in(), x = in(), y = in();
		if (op) {
			s = sum(y);
			if (x > 1) s -= sum(x-1);
			out(s);
		} else add(x, y);
	}
	return 0;
}

