#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <deque>
#include <set>
#include <utility>
#include <array>
using namespace std;
#define ALL(x) x.begin(), x.end()
#define int long long
#define N 100005
int n,q,t[N<<2], lz[N<<2];
void push(int v, int l, int r)
{
if (lz[v])
{
t[v] += (r-l+1)*lz[v];
if (l != r)
lz[2*v+1] += lz[v], lz[2*v+2] += lz[v];
lz[v] = 0;
}
}
void upd(int v, int l, int r, int x, int y, int k)
{
push(v, l, r);
if (r < x || y < l) return;
if (x <= l && r <= y) {
lz[v] = k;
push(v, l, r);
} else {
upd(2*v+1, l, (l+r)/2,x,y,k);
upd(2*v+2,(l+r)/2+1, r,x,y,k);
t[v]=t[2*v+1]+t[2*v+2];
}
}
int qry(int v, int l, int r, int x, int y)
{
push(v, l, r);
if (r < x || y < l) return 0;
if (x <= l && r <= y) return t[v];
return qry(2*v+1, l, (l+r)/2,x,y) + qry(2*v+2,(l+r)/2+1, r,x,y);
}
signed main()
{
cin>>n>>q;
string op;
while (q--)
{
int x, y, k;
cin >> op;
if (op == "query")
{
cin>>x>>y;
cout<<qry(0, 1, n, x, y) << '\n';
}
else
{
cin >> x >> y >>k;
upd(0,1,n,x,y,k);
}
}
return 0;
}