#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;
}