inline ll __read() { ll x(0), t(1); charo(getchar()); while (o < '0' || o > '9') { if (o == '-') t = -1; o = getchar(); } for (; o >= '0' && o <= '9'; o = getchar()) x = (x << 1) + (x << 3) + (o ^ 48); return x * t; }
ll n, m; ll t[maxn], d[maxn];
inlinevoidUpdate(ll x, ll val) { ll temp(x); while (x <= n) { t[x] += val; d[x] += val * temp; x += lowbit(x); } }
inline ll Query(ll x) { ll ans(0), temp(x); while (x) { ans += t[x] * (temp + 1) - d[x]; x ^= lowbit(x); } return ans; }
signedmain() { n = __read(), m = __read(); ll last = 0; for (ll i = 1; i <= n; ++i) { ll x = __read(); Update(i, x - last); last = x; } while (m--) { ll opt = __read(), l = __read(), r = __read(); if (opt == 1) { ll k = __read(); Update(l, k); Update(r + 1, -k); } elseprintf ("%lld\n", Query(r) - Query(l - 1)); } system("pause"); }
inlineint __read() { intx(0), t(1); charo(getchar()); while (o < '0' || o > '9') { if (o == '-') t = -1; o = getchar(); } for (; o >= '0' && o <= '9'; o = getchar()) x = (x << 1) + (x << 3) + (o ^ 48); return x * t; }
int n, m; ll t[maxn];
inlinevoidUpdate(int x, ll val){ while (x <= n) { t[x] += val; x += lowbit(x); } }
inline ll Query(int x){ ll ans(0); while (x) { ans += t[x]; x ^= lowbit(x); } return ans; }
signedmain(){ n = __read(), m = __read(); int last = 0; for (int i = 1; i <= n; ++i) { int x = __read(); Update(i, x - last); last = x; } while (m--) { int opt = __read(), l = __read(); if (opt == 1) { int r = __read(), k = __read(); Update(l, k); Update(r + 1, -k); } else printf("%lld\n", Query(l)); } system("pause"); }
inline ll __read() { ll x(0), t(1); charo(getchar()); while (o < '0' || o > '9') { if (o == '-') t = -1; o = getchar(); } for (; o >= '0' && o <= '9'; o = getchar()) x = (x << 1) + (x << 3) + (o ^ 48); return x * t; }
ll n, m; ll t[maxn], d[maxn];
inlinevoidUpdate(ll x, ll val) { ll temp(x); while (x <= n) { t[x] += val; d[x] += val * temp; x += lowbit(x); } }
inline ll Query(ll x) { ll ans(0), temp(x); while (x) { ans += t[x] * (temp + 1) - d[x]; x ^= lowbit(x); } return ans; }
signedmain() { n = __read(), m = __read(); ll last = 0; for (ll i = 1; i <= n; ++i) { ll x = __read(); Update(i, x - last); last = x; } while (m--) { ll opt = __read(), l = __read(), r = __read(); if (opt == 1) { ll k = __read(); Update(l, k); Update(r + 1, -k); } elseprintf ("%lld\n", Query(r) - Query(l - 1)); } system("pause"); }
inlineint __read() { intx(0), t(1); charo(getchar()); while (o < '0' || o > '9') { if (o == '-') t = -1; o = getchar(); } for (; o >= '0' && o <= '9'; o = getchar()) x = (x << 1) + (x << 3) + (o ^ 48); return x * t; }
int n, m, opt; ll t[maxn][maxn];
inlinevoidUpdate(int x, int y, int val) { for (int i = x; i <= n; i += lowbit(i)) for (int j = y; j <= m; j += lowbit(j)) t[i][j] += val; }
inline ll Query(int x, int y) { ll ans(0); for (int i = x; i; i ^= lowbit(i)) for (int j = y; j; j ^= lowbit(j)) ans += t[i][j]; return ans; }
signedmain() { n = __read(), m = __read(); while (~scanf ("%d", &opt)) { if (opt == 1) { int a = __read(), b = __read(), x = __read(); Update(a, b, x); } else { int a = __read(), b = __read(), c = __read(), d = __read(); printf ("%lld\n", Query(c, d) + Query(a - 1, b - 1) - Query(a - 1, d) - Query(c, b - 1)); } } system("pause"); }
inlineint __read() { intx(0), t(1); charo(getchar()); while (o < '0' || o > '9') { if (o == '-') t = -1; o = getchar(); } for (; o >= '0' && o <= '9'; o = getchar()) x = (x << 1) + (x << 3) + (o ^ 48); return x * t; }
int n, m, opt; ll t[maxn][maxn];
inlinevoidUpdate(int x, int y, int val) { for (int i = x; i <= n; i += lowbit(i)) for (int j = y; j <= m; j += lowbit(j)) t[i][j] += val; }
inline ll Query(int x, int y) { ll ans(0); for (int i = x; i; i ^= lowbit(i)) for (int j = y; j; j ^= lowbit(j)) ans += t[i][j]; return ans; }
signedmain() { n = __read(), m = __read(); while (~scanf ("%d", &opt)) { if (opt == 1) { int a = __read(), b = __read(), c = __read(), d = __read(), x = __read(); Update(a, b, x); Update(a, d + 1, -x); Update(c + 1, b, -x); Update(c + 1, d + 1, x);
} else { int a = __read(), b = __read(); printf ("%lld\n", Query(a, b)); } } system("pause"); }
inlineint __read() { intx(0), t(1); charo(getchar()); while (o < '0' || o > '9') { if (o == '-') t = -1; o = getchar(); } for (; o >= '0' && o <= '9'; o = getchar()) x = (x << 1) + (x << 3) + (o ^ 48); return x * t; }
int n, m, opt; ll t[4][maxn][maxn];
inlinevoidUpdate(int x, int y, int val) { for (int i = x; i <= n; i += lowbit(i)) for (int j = y; j <= m; j += lowbit(j)) { t[0][i][j] += val; t[1][i][j] += val * y; t[2][i][j] += val * x; t[3][i][j] += val * x * y; } }
inline ll Query(int x, int y) { ll ans[4] = {0, 0, 0, 0}; for (int i = x; i; i ^= lowbit(i)) for (int j = y; j; j ^= lowbit(j)) for (intk(0); k < 4; ++k) ans[k] += t[k][i][j]; return (x + 1) * (y + 1) * ans[0] - (x + 1) * ans[1] - (y + 1) * ans[2] + ans[3]; }
signedmain() { n = __read(), m = __read(); while (~scanf ("%d", &opt)) { if (opt == 1) { int a = __read(), b = __read(), c = __read(), d = __read(), x = __read(); Update(a, b, x); Update(a, d + 1, -x); Update(c + 1, b, -x); Update(c + 1, d + 1, x);
} else { int a = __read(), b = __read(), c = __read(), d = __read(); printf ("%lld\n", Query(c, d) - Query(a - 1, d) - Query(c, b - 1) + Query(a - 1, b - 1)); } } system("pause"); }