#include<bits/stdc++.h>
using namespace std;
long long tree[400000],lazy[400000];
int co[400000];
void update(int node,int s,int e,int p,int q)
{
if(co[node]!=0)
{
//printf("!%d ",lazy[node]);
tree[node]+=lazy[node]*(e-s+1)+co[node]*(((e-s+2)*(e-s+1)))/2;
//printf("[%d]=%lld ",node,tree[node]);
if(s!=e)
{
lazy[node*2+1]+=lazy[node];
co[node*2+1]+=co[node];
lazy[node*2+2]+=lazy[node]+((s+e)/2-s+1);
co[node*2+2]+=co[node];
//printf("L[%d]=%lld L[%d]=%lld ",node*2+1,lazy[node*2+1],node*2+2,lazy[node*2+2]);
//printf("C[%d]=%d C[%d]=%d ",node*2+1,co[node*2+1],node*2+2,co[node*2+2]);
}
lazy[node]=0;
co[node]=0;
}
if(s>e||p>e||q<s)
return;
if(p<=s&&q>=e)
{
//printf("PP ");
long long st=s-p+1;
tree[node]+=st*(e-s+1)+((e-s)*(e-s+1))/2;
//printf("[%d]=%lld ",node,tree[node]);
if(s!=e)
{
lazy[node*2+1]+=st-1;
co[node*2+1]+=1;
lazy[node*2+2]+=st+((s+e)/2-s);
co[node*2+2]+=1;
//printf("L[%d]=%lld L[%d]=%lld ",node*2+1,lazy[node*2+1],node*2+2,lazy[node*2+2]);
//printf("C[%d]=%d C[%d]=%d ",node*2+1,co[node*2+1],node*2+2,co[node*2+2]);
}
return ;
}
int mid=(s+e)/2;
update(node*2+1,s,mid,p,q);
update(node*2+2,mid+1,e,p,q);
tree[node]=tree[node*2+1]+tree[node*2+2];
//printf("[%d]=%lld \n",node,tree[node]);
}
long long query(int node,int s,int e,int p,int q)
{
if(s>e||p>e||q<s)
return 0;
if(co[node]!=0)
{
tree[node]+=lazy[node]*(e-s+1)+co[node]*(((e-s+2)*(e-s+1)))/2;
if(s!=e)
{
lazy[node*2+1]+=lazy[node];
co[node*2+1]+=co[node];
lazy[node*2+2]+=lazy[node]+((s+e)/2-s+1);
co[node*2+2]+=co[node];
}
lazy[node]=0;
co[node]=0;
}
if(p<=s&&q>=e)
return tree[node];
int mid=(s+e)/2;
return query(node*2+1,s,mid,p,q)+query(node*2+2,mid+1,e,p,q);
}
int main()
{
int n,q,i,p,q1,c;
scanf("%d%d",&n,&q);
memset(tree,0,sizeof tree);
memset(lazy,0,sizeof lazy);
memset(co,0,sizeof co);
for(i=0;i<q;i++)
{
scanf("%d%d%d",&c,&p,&q1);
if(c==0)
update(0,0,n-1,p-1,q1-1);
else
printf("%lld\n",query(0,0,n-1,p-1,q1-1));
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbG9uZyBsb25nIHRyZWVbNDAwMDAwXSxsYXp5WzQwMDAwMF07CmludCBjb1s0MDAwMDBdOwp2b2lkIHVwZGF0ZShpbnQgbm9kZSxpbnQgcyxpbnQgZSxpbnQgcCxpbnQgcSkKewoJaWYoY29bbm9kZV0hPTApCgl7CgkJLy9wcmludGYoIiElZCAiLGxhenlbbm9kZV0pOwoJCXRyZWVbbm9kZV0rPWxhenlbbm9kZV0qKGUtcysxKStjb1tub2RlXSooKChlLXMrMikqKGUtcysxKSkpLzI7CgkJLy9wcmludGYoIlslZF09JWxsZCAiLG5vZGUsdHJlZVtub2RlXSk7CgkJaWYocyE9ZSkKCQl7CgkJCWxhenlbbm9kZSoyKzFdKz1sYXp5W25vZGVdOwoJCQljb1tub2RlKjIrMV0rPWNvW25vZGVdOwoJCQlsYXp5W25vZGUqMisyXSs9bGF6eVtub2RlXSsoKHMrZSkvMi1zKzEpOwoJCQljb1tub2RlKjIrMl0rPWNvW25vZGVdOwoJCQkvL3ByaW50ZigiTFslZF09JWxsZCBMWyVkXT0lbGxkICIsbm9kZSoyKzEsbGF6eVtub2RlKjIrMV0sbm9kZSoyKzIsbGF6eVtub2RlKjIrMl0pOwoJCQkvL3ByaW50ZigiQ1slZF09JWQgQ1slZF09JWQgIixub2RlKjIrMSxjb1tub2RlKjIrMV0sbm9kZSoyKzIsY29bbm9kZSoyKzJdKTsKCQl9CgkJbGF6eVtub2RlXT0wOwoJCWNvW25vZGVdPTA7Cgl9CglpZihzPmV8fHA+ZXx8cTxzKQoJcmV0dXJuOwoJaWYocDw9cyYmcT49ZSkKCXsKCQkvL3ByaW50ZigiUFAgIik7CgkJbG9uZyBsb25nIHN0PXMtcCsxOwoJCXRyZWVbbm9kZV0rPXN0KihlLXMrMSkrKChlLXMpKihlLXMrMSkpLzI7CgkJLy9wcmludGYoIlslZF09JWxsZCAiLG5vZGUsdHJlZVtub2RlXSk7CgkJaWYocyE9ZSkKCQl7CgkJCWxhenlbbm9kZSoyKzFdKz1zdC0xOwoJCQljb1tub2RlKjIrMV0rPTE7CgkJCWxhenlbbm9kZSoyKzJdKz1zdCsoKHMrZSkvMi1zKTsKCQkJY29bbm9kZSoyKzJdKz0xOwoJCQkvL3ByaW50ZigiTFslZF09JWxsZCBMWyVkXT0lbGxkICIsbm9kZSoyKzEsbGF6eVtub2RlKjIrMV0sbm9kZSoyKzIsbGF6eVtub2RlKjIrMl0pOwoJCQkvL3ByaW50ZigiQ1slZF09JWQgQ1slZF09JWQgIixub2RlKjIrMSxjb1tub2RlKjIrMV0sbm9kZSoyKzIsY29bbm9kZSoyKzJdKTsKCQl9CgkJcmV0dXJuIDsKCX0KCWludCBtaWQ9KHMrZSkvMjsKCXVwZGF0ZShub2RlKjIrMSxzLG1pZCxwLHEpOwoJdXBkYXRlKG5vZGUqMisyLG1pZCsxLGUscCxxKTsKCXRyZWVbbm9kZV09dHJlZVtub2RlKjIrMV0rdHJlZVtub2RlKjIrMl07CgkvL3ByaW50ZigiWyVkXT0lbGxkIFxuIixub2RlLHRyZWVbbm9kZV0pOwp9CmxvbmcgbG9uZyBxdWVyeShpbnQgbm9kZSxpbnQgcyxpbnQgZSxpbnQgcCxpbnQgcSkKewoJaWYocz5lfHxwPmV8fHE8cykKCXJldHVybiAwOwoJaWYoY29bbm9kZV0hPTApCgl7CgkJdHJlZVtub2RlXSs9bGF6eVtub2RlXSooZS1zKzEpK2NvW25vZGVdKigoKGUtcysyKSooZS1zKzEpKSkvMjsKCQlpZihzIT1lKQoJCXsKCQkJbGF6eVtub2RlKjIrMV0rPWxhenlbbm9kZV07CgkJCWNvW25vZGUqMisxXSs9Y29bbm9kZV07CgkJCWxhenlbbm9kZSoyKzJdKz1sYXp5W25vZGVdKygocytlKS8yLXMrMSk7CgkJCWNvW25vZGUqMisyXSs9Y29bbm9kZV07CgkJfQoJCWxhenlbbm9kZV09MDsKCQljb1tub2RlXT0wOwoJfQoJaWYocDw9cyYmcT49ZSkKCXJldHVybiB0cmVlW25vZGVdOwoJaW50IG1pZD0ocytlKS8yOwoJcmV0dXJuIHF1ZXJ5KG5vZGUqMisxLHMsbWlkLHAscSkrcXVlcnkobm9kZSoyKzIsbWlkKzEsZSxwLHEpOwp9CmludCBtYWluKCkKewoJaW50IG4scSxpLHAscTEsYzsKCXNjYW5mKCIlZCVkIiwmbiwmcSk7CgltZW1zZXQodHJlZSwwLHNpemVvZiB0cmVlKTsKCW1lbXNldChsYXp5LDAsc2l6ZW9mIGxhenkpOwoJbWVtc2V0KGNvLDAsc2l6ZW9mIGNvKTsKCWZvcihpPTA7aTxxO2krKykKCXsKCQlzY2FuZigiJWQlZCVkIiwmYywmcCwmcTEpOwoJCWlmKGM9PTApCgkJdXBkYXRlKDAsMCxuLTEscC0xLHExLTEpOwoJCWVsc2UKCQlwcmludGYoIiVsbGRcbiIscXVlcnkoMCwwLG4tMSxwLTEscTEtMSkpOwoJfQoJcmV0dXJuIDA7Cn0=