#include <iostream>
#include <fstream>
using namespace std;
ifstream f("test.in");
ofstream g("test.out");
#define nmax 100005
typedef struct{
int val, add, viz;
}camp;
camp aint[nmax*4];
int n, m, sum;
void udpate(int nod, int st, int dr, int a, int b, int val){
if (a <= st && dr <= b){
aint[nod].val += val*(dr-st+1);
aint[nod].add += val;
aint[nod].viz = 1;
return;
}
int mij = (st + dr) / 2;
if (aint[nod].viz==1){
udpate(nod*2, st, mij, st, mij, aint[nod].add);
udpate(nod*2+1, mij+1, dr, mij+1, dr, aint[nod].add);
aint[nod].viz = 0;
aint[nod].add = 0;
}
if (a <= mij) udpate(nod*2, st, mij, a, b, val);
if (b > mij) udpate(nod*2+1, mij+1, dr, a, b, val);
aint[nod].val = aint[nod*2].val + aint[nod*2+1].val;
}
void citeste(){
f >> n >> m;
for(int i=1; i<=n; i++){
int x;
f >> x;
udpate(1,1,n,i,i,x);
}
}
void query(int nod, int st, int dr, int a, int b){
if (a <= st && dr <= b){
sum += aint[nod].val;
return;
}
int mij = (st + dr) / 2;
if (aint[nod].viz == 1){
udpate(nod*2, st, mij, st, mij, aint[nod].add);
udpate(nod*2+1, mij+1, dr, mij+1, dr, aint[nod].add);
aint[nod].viz = 0;
aint[nod].add = 0;
}
if (a <= mij) query(nod*2, st, mij, a, b);
if ( b > mij) query(nod*2+1, mij+1, dr, a, b);
}
int main(){
citeste();
for(int i=1; i<=m; i++){
int x, y, x2, y2, val;
f >> x >> y >> x2 >> y2 >> val;
udpate(1,1,n,x,y,val);
sum = 0;
query(1,1,n,x2, y2);
g << sum << "\n";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppZnN0cmVhbSBmKCJ0ZXN0LmluIik7Cm9mc3RyZWFtIGcoInRlc3Qub3V0Iik7CgojZGVmaW5lIG5tYXggMTAwMDA1Cgp0eXBlZGVmIHN0cnVjdHsKICAgIGludCB2YWwsIGFkZCwgdml6Owp9Y2FtcDsKCmNhbXAgYWludFtubWF4KjRdOwppbnQgbiwgbSwgc3VtOwoKdm9pZCB1ZHBhdGUoaW50IG5vZCwgaW50IHN0LCBpbnQgZHIsIGludCBhLCBpbnQgYiwgaW50IHZhbCl7CgogICAgaWYgKGEgPD0gc3QgJiYgZHIgPD0gYil7CiAgICAgICAgYWludFtub2RdLnZhbCArPSB2YWwqKGRyLXN0KzEpOwogICAgICAgIGFpbnRbbm9kXS5hZGQgKz0gdmFsOwogICAgICAgIGFpbnRbbm9kXS52aXogPSAxOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpbnQgbWlqID0gKHN0ICsgZHIpIC8gMjsKCiAgICBpZiAoYWludFtub2RdLnZpej09MSl7CiAgICAgICAgdWRwYXRlKG5vZCoyLCBzdCwgbWlqLCBzdCwgbWlqLCBhaW50W25vZF0uYWRkKTsKICAgICAgICB1ZHBhdGUobm9kKjIrMSwgbWlqKzEsIGRyLCBtaWorMSwgZHIsIGFpbnRbbm9kXS5hZGQpOwogICAgICAgIGFpbnRbbm9kXS52aXogPSAwOwogICAgICAgIGFpbnRbbm9kXS5hZGQgPSAwOwogICAgfQoKICAgIGlmIChhIDw9IG1paikgdWRwYXRlKG5vZCoyLCBzdCwgbWlqLCBhLCBiLCB2YWwpOwogICAgaWYgKGIgPiBtaWopIHVkcGF0ZShub2QqMisxLCBtaWorMSwgZHIsIGEsIGIsIHZhbCk7CgogICAgYWludFtub2RdLnZhbCA9IGFpbnRbbm9kKjJdLnZhbCArIGFpbnRbbm9kKjIrMV0udmFsOwoKfQoKdm9pZCBjaXRlc3RlKCl7CgogICAgZiA+PiBuID4+IG07CiAgICBmb3IoaW50IGk9MTsgaTw9bjsgaSsrKXsKICAgICAgICBpbnQgeDsKICAgICAgICBmID4+IHg7CiAgICAgICAgdWRwYXRlKDEsMSxuLGksaSx4KTsKICAgIH0KCn0KCnZvaWQgcXVlcnkoaW50IG5vZCwgaW50IHN0LCBpbnQgZHIsIGludCBhLCBpbnQgYil7CgogICAgaWYgKGEgPD0gc3QgJiYgZHIgPD0gYil7CiAgICAgICAgc3VtICs9IGFpbnRbbm9kXS52YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGludCBtaWogPSAoc3QgKyBkcikgLyAyOwogICAgaWYgKGFpbnRbbm9kXS52aXogPT0gMSl7CiAgICAgICAgdWRwYXRlKG5vZCoyLCBzdCwgbWlqLCBzdCwgbWlqLCBhaW50W25vZF0uYWRkKTsKICAgICAgICB1ZHBhdGUobm9kKjIrMSwgbWlqKzEsIGRyLCBtaWorMSwgZHIsIGFpbnRbbm9kXS5hZGQpOwogICAgICAgIGFpbnRbbm9kXS52aXogPSAwOwogICAgICAgIGFpbnRbbm9kXS5hZGQgPSAwOwogICAgfQoKICAgIGlmIChhIDw9IG1paikgcXVlcnkobm9kKjIsIHN0LCBtaWosIGEsIGIpOwogICAgaWYgKCBiID4gbWlqKSBxdWVyeShub2QqMisxLCBtaWorMSwgZHIsIGEsIGIpOwoKfQoKaW50IG1haW4oKXsKCiAgICBjaXRlc3RlKCk7CiAgICBmb3IoaW50IGk9MTsgaTw9bTsgaSsrKXsKICAgICAgICBpbnQgeCwgeSwgeDIsIHkyLCB2YWw7CiAgICAgICAgZiA+PiB4ID4+IHkgPj4geDIgPj4geTIgPj4gdmFsOwogICAgICAgIHVkcGF0ZSgxLDEsbix4LHksdmFsKTsKICAgICAgICBzdW0gPSAwOwogICAgICAgIHF1ZXJ5KDEsMSxuLHgyLCB5Mik7CiAgICAgICAgZyA8PCBzdW0gPDwgIlxuIjsKICAgIH0KCiAgICByZXR1cm4gMDsKCn0K