#include <bits/stdc++.h>

using namespace std;

using ll = long long;
using ull = unsigned long long;

mt19937 mt(736);

// [*  *  *  *  *  *  *  *]
// [*  *  *  *][*  *  *  *]
// [*  *][*  *][*  *][*  *]
// [*][*][*][*][*][*][*][*]

// 0 нет
// 1 -- root
// v -> 2 * v
// v -> 2 * v + 1
// parent v = v / 2

// 1 -> 2, 3
// 2 -> 4, 5
// 3 -> 6, 7
// ...
// n -> ...

// [2 3), [3 5), [5, 6) = [2, 6)
// [*](!][*][*][!)[*][*][*]
// [*  *](!  !)[*  *][*  *]
// [*  *  *  *][*  *  *  *]

// layers O(log n)

// add O(log)
// sum

int up(int n)
{
	int r = 1;

	while (r < n)
		r *= 2;

	return r;
}

class segtree
{
	vector<ll> arr;

public:
	explicit segtree(int n) : arr(2 * n)
	{}

	void add(int v, int x)
	{
		v += (int) arr.size() / 2;

		while (v >= 1)
		{
			arr[v] += x;
			v /= 2;
		}
	}

	// [l, r)
	ll sum(int l, int r)
	{
		l += (int) arr.size() / 2;
		r += (int) arr.size() / 2;

		ll ans = 0;

		while (l < r)
		{
			if (l % 2 == 1)
				ans += arr[l++];
			if (r % 2 == 1)
				ans += arr[--r];

			l /= 2;
			r /= 2;
		}

		return ans;
	}
};



void solve(istream &cin = std::cin, ostream &cout = std::cout)
{
	int n, m;

	cin >> n >> m;

	vector<int> arr(n);

	for (auto &it : arr)
		cin >> it;

	cerr << n << endl;

	segtree st(arr.size());

	for (int i = 0; i < arr.size(); i++)
		st.add(i, arr[i]);

	for (int q = 0; q < m; q++)
	{
		string str = "sum";
		int a, b;

		cin >> a >> b;
		a--;

		if (str == "add")
			st.add(a, b);
		else if (str == "sum")
			cout << st.sum(a, b) << endl;
	}
}


int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);

	cout << fixed;

#ifdef LOCAL
	auto st = clock();

	ifstream fin("../input.txt");

	do
	{
		solve(fin);

		cout << "===" << endl;

		string str;
		while (getline(fin, str) && str != string(max(1, (int) str.size()), '='));
	} while (fin);

	cout << setprecision(6) << "clock: " << double(clock() - st) / CLOCKS_PER_SEC << endl;
#else
	solve();
#endif

	return 0;
}
