#include<iostream>
#define mid ((l+r)>>1)
#define ll long long
#define lc (x<<1)
#define rc ((x<<1)|1)
#define int long long
using namespace std;
struct node
{
ll l,r,sum,add;
}tr[5*100005*4];
void pushup(int x)
{
tr[x].sum=tr[lc].sum+tr[rc].sum;
}
void build(int x,int l,int r)
{
if(l==r)
{
tr[x].sum=0;
return;
}
build(lc,l,mid);
build(rc,mid+1,r);
pushup(x);
}
void pushdown(int x,int l,int r)
{
int v=tr[x].add;
tr[lc].add+=v;
tr[rc].add+=v;
tr[lc].sum+=(mid-l+1)*v;
tr[rc].sum+=(r-mid)*v;
tr[x].add=0;
}
ll query(int x,int l,int r,int from,int to)
{
ll res=0;
if(l==r)
{
return tr[x].sum;
}
if(from<=mid) res+=query(lc,l,mid,from,to);
if(to>mid) res+=query(rc,mid+1,r,from,to);
return res;
}
void update(int x,int l,int r,int k,int v)
{
if(l==k&&k==r)
{
tr[x].sum+=(r-l+1)*v;
tr[x].add+=v;
return;
}
if(k<=mid)update(lc,l,mid,k,v);
else update(rc,mid+1,r,k,v);
pushup(x);
}
int n;
int m;
signed main()
{
cin>>n>>m;
build(1,1,n);
while(m--)
{
char p;
scanf("%s",&p);
if(p=='x')
{
int x,y;
scanf("%lld %lld",&x,&y);
update(1,1,n,x,y);
}
else
{
int l,r;
scanf("%lld %lld",&l,&r);
printf("%lld\n",query(1,1,n,l,r));
}
}
return 0;
}