#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct fenwick {
ll arr[1000055];
void update(int i, ll x) {
while (i <= 1000005) {
arr[i] += x;
i += i & -i;
}
}
ll sum(int i) const {
ll x = 0;
while (i) {
x += arr[i];
i -= i & -i;
}
return x;
}
} suma, sumb;
int main() {
int q;
scanf("%d", &q);
while (q--) {
int t, l, r;
scanf("%d %d %d", &t, &l, &r);
if (t == 1) {
int x;
scanf("%d", &x);
suma.update(l, x); suma.update(r + 1, -x);
sumb.update(l, (1ll - l) * x); sumb.update(r + 1, 1ll * r * x);
}
else {
ll ans = 0;
ans += suma.sum(r) * r + sumb.sum(r);
ans -= suma.sum(l - 1) * (l - 1) + sumb.sum(l - 1);
printf("%lld\n", ans);
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwoKc3RydWN0IGZlbndpY2sgewoJbGwgYXJyWzEwMDAwNTVdOwoJdm9pZCB1cGRhdGUoaW50IGksIGxsIHgpIHsKCQl3aGlsZSAoaSA8PSAxMDAwMDA1KSB7CgkJCWFycltpXSArPSB4OwoJCQlpICs9IGkgJiAtaTsKCQl9Cgl9CglsbCBzdW0oaW50IGkpIGNvbnN0IHsKCQlsbCB4ID0gMDsKCQl3aGlsZSAoaSkgewoJCQl4ICs9IGFycltpXTsKCQkJaSAtPSBpICYgLWk7CgkJfQoJCXJldHVybiB4OwoJfQp9IHN1bWEsIHN1bWI7CgppbnQgbWFpbigpIHsKCWludCBxOwoJc2NhbmYoIiVkIiwgJnEpOwoJd2hpbGUgKHEtLSkgewoJCWludCB0LCBsLCByOwoJCXNjYW5mKCIlZCAlZCAlZCIsICZ0LCAmbCwgJnIpOwoJCWlmICh0ID09IDEpIHsKCQkJaW50IHg7CgkJCXNjYW5mKCIlZCIsICZ4KTsKCQkJc3VtYS51cGRhdGUobCwgeCk7IHN1bWEudXBkYXRlKHIgKyAxLCAteCk7CgkJCXN1bWIudXBkYXRlKGwsICgxbGwgLSBsKSAqIHgpOyBzdW1iLnVwZGF0ZShyICsgMSwgMWxsICogciAqIHgpOwoJCX0KCQllbHNlIHsKCQkJbGwgYW5zID0gMDsKCQkJYW5zICs9IHN1bWEuc3VtKHIpICogciArIHN1bWIuc3VtKHIpOwoJCQlhbnMgLT0gc3VtYS5zdW0obCAtIDEpICogKGwgLSAxKSArIHN1bWIuc3VtKGwgLSAxKTsKCQkJcHJpbnRmKCIlbGxkXG4iLCBhbnMpOwoJCX0KCX0KCXJldHVybiAwOwp9