// Cho mảng a độ dài n, xây dựng mảng sum là tổng tiền tố của mảng a
// ta có công thức:
// sum[0] = 0;
// sum[i] = sum[i - 1] + a[i]; i >= 1
// sum[i] tổng của i phần tử đầu tiên của a
// sum[0] = 0;
// for (int i = 1; i <= n; i++) sum[i] = sum[i - 1] + a[i];
// lấy tổng của đoạn [l, r]: sum[r] - sum[l - 1]
// Cho mảng a ban đầu có n phần tử có giá trị là 0
// cho Q truy vấn, mỗi truy vấn là tăng đoạn [l, r] của a lên x đơn vị
// Hỏi sau Q truy vấn thì các phần tử của a có giá trị bao nhiêu?
// n = 3
// a = [0, 0, 0]
// Q = 2
// 1 2 3 -> tăng đoạn [1, 2] lên 3 đơn vị
// 1 3 5 -> tăng đoạn [1, 3] lên 5 đơn vị
// -> a = [8, 8, 5]
// thuật toán ngây thơ: O(Q * N)
// for (int i = 1; i <= Q; i++) {
// int l, r, x;
// cin >> l >> r >> x;
// for (int j = l; j <= r; j++) a[j] += x;
// }
// phiên bản 2 của tổng tiền tố: O()
// Giờ đã có mảng sum[] của a[], nếu ta tăng phần tử thứ i của a
// lên x đơn vị thì mảng sum[] thay đổi như thế nào?
// a = [ 1, 2, 4, 10]
// sum = [0, 1, 3, 7, 17]
// tăng a[3] lên 4 đơn vị, thì mảng sum thay đổi như thế nào?
// a = [ 1, 2, 8, 10]
// sum = [0, 1, 3, 11, 21]
// giả sử tiếp tục tăng a[2] lên 3 đơn vị thì mảng sum[]
// thay đổi như nào?
// a = [ 1, 5, 8, 10]
// sum = [0, 1, 6, 14, 24]
// => Nhận xét: nếu ta tăng phần tử thứ i của a lên x đơn vị,
// thì đoạn [i, n] của mảng sum cũng tăng lên x đơn vị.
// => Quay trở lại bài toán ban đầu, nếu ta muốn tăng đoạn [l, r]
// lên x đơn vị
// for (int i = 1; i <= Q; i++) { O(Q)
// int l, r, x;
// cin >> l >> r >> x;
// a[l] += x; O(1)
// a[r + 1] -= x; O(1)
// }
// for (int i = 1; i <= n; i++) a[i] += a[i - 1]; O(n)
// => O(Q + N)
#include <bits/stdc++.h>
using namespace std;
#define fst first
#define snd second
typedef long long ll;
typedef pair<int, int> ii;
const ll LINF = (ll)1e18;
const int INF = (int)1e9;
const int N = (int)1e5 + 5;
int n, Q;
int a[N];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
cin >> Q;
for (int i = 1; i <= Q; i++) {
int l, r, x;
cin >> l >> r >> x;
a[l] += x;
a[r + 1] -= x;
}
for (int i = 1; i <= n; i++) a[i] += a[i - 1];
cout << "Mang a sau Q truy van la:\n";
for (int i = 1; i <= n; i++) cout << a[i] << ' '; cout << '\n';
}
Ly8gQ2hvIG3huqNuZyBhIMSR4buZIGTDoGkgbiwgeMOieSBk4buxbmcgbeG6o25nIHN1bSBsw6AgdOG7lW5nIHRp4buBbiB04buRIGPhu6dhIG3huqNuZyBhICAKLy8gdGEgY8OzIGPDtG5nIHRo4bupYzogCi8vIAlzdW1bMF0gPSAwOyAgIAovLyAJc3VtW2ldID0gc3VtW2kgLSAxXSArIGFbaV07IGkgPj0gMSAgCgovLyBzdW1baV0gdOG7lW5nIGPhu6dhIGkgcGjhuqduIHThu60gxJHhuqd1IHRpw6puIGPhu6dhIGEgIAoKLy8gc3VtWzBdID0gMDsgIAovLyBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHN1bVtpXSA9IHN1bVtpIC0gMV0gKyBhW2ldOyAKCi8vIGzhuqV5IHThu5VuZyBj4bunYSDEkW/huqFuIFtsLCByXTogc3VtW3JdIC0gc3VtW2wgLSAxXQoKLy8gQ2hvIG3huqNuZyBhIGJhbiDEkeG6p3UgY8OzIG4gcGjhuqduIHThu60gY8OzIGdpw6EgdHLhu4sgbMOgIDAgCi8vIGNobyBRIHRydXkgduG6pW4sIG3hu5dpIHRydXkgduG6pW4gbMOgIHTEg25nIMSRb+G6oW4gW2wsIHJdIGPhu6dhIGEgbMOqbiB4IMSRxqFuIHbhu4sgCi8vIEjhu49pIHNhdSBRIHRydXkgduG6pW4gdGjDrCBjw6FjIHBo4bqnbiB04butIGPhu6dhIGEgY8OzIGdpw6EgdHLhu4sgYmFvIG5oacOqdT8KCi8vIG4gPSAzIAovLyBhID0gWzAsIDAsIDBdIAoKLy8gUSA9IDIgCi8vIDEgMiAzIC0+IHTEg25nIMSRb+G6oW4gWzEsIDJdIGzDqm4gMyDEkcahbiB24buLIAovLyAxIDMgNSAtPiB0xINuZyDEkW/huqFuIFsxLCAzXSBsw6puIDUgxJHGoW4gduG7iyAKCi8vIC0+IGEgPSBbOCwgOCwgNV0gCgovLyB0aHXhuq10IHRvw6FuIG5nw6J5IHRoxqE6IE8oUSAqIE4pCgovLyBmb3IgKGludCBpID0gMTsgaSA8PSBROyBpKyspIHsKLy8gCWludCBsLCByLCB4OyAKLy8gCWNpbiA+PiBsID4+IHIgPj4geDsgICAKLy8gCWZvciAoaW50IGogPSBsOyBqIDw9IHI7IGorKykgYVtqXSArPSB4OyAgCi8vIH0KCi8vIHBoacOqbiBi4bqjbiAyIGPhu6dhIHThu5VuZyB0aeG7gW4gdOG7kTogTygpCi8vIEdp4budIMSRw6MgY8OzIG3huqNuZyBzdW1bXSBj4bunYSBhW10sIG7hur91IHRhIHTEg25nIHBo4bqnbiB04butIHRo4bupIGkgY+G7p2EgYSAKLy8gbMOqbiB4IMSRxqFuIHbhu4sgdGjDrCBt4bqjbmcgc3VtW10gdGhheSDEkeG7lWkgbmjGsCB0aOG6vyBuw6BvPwoKLy8gICBhID0gWyAgIDEsIDIsIDQsIDEwXQovLyBzdW0gPSBbMCwgMSwgMywgNywgMTddCgovLyB0xINuZyBhWzNdIGzDqm4gNCDEkcahbiB24buLLCB0aMOsIG3huqNuZyBzdW0gdGhheSDEkeG7lWkgbmjGsCB0aOG6vyBuw6BvPwoKCi8vICAgYSA9IFsgICAxLCAyLCAgOCwgMTBdCi8vIHN1bSA9IFswLCAxLCAzLCAxMSwgMjFdCgovLyBnaeG6oyBz4butIHRp4bq/cCB04bulYyB0xINuZyBhWzJdIGzDqm4gMyDEkcahbiB24buLIHRow6wgbeG6o25nIHN1bVtdCi8vIHRoYXkgxJHhu5VpIG5oxrAgbsOgbz8gIAoKLy8gICBhID0gWyAgIDEsIDUsIDgsICAxMF0KLy8gc3VtID0gWzAsIDEsIDYsIDE0LCAyNF0KCi8vID0+IE5o4bqtbiB4w6l0OiBu4bq/dSB0YSB0xINuZyBwaOG6p24gdOG7rSB0aOG7qSBpIGPhu6dhIGEgbMOqbiB4IMSRxqFuIHbhu4ssICAKLy8gdGjDrCDEkW/huqFuIFtpLCBuXSBj4bunYSBt4bqjbmcgc3VtIGPFqW5nIHTEg25nIGzDqm4geCDEkcahbiB24buLLiAgCgoKLy8gPT4gUXVheSB0cuG7nyBs4bqhaSBiw6BpIHRvw6FuIGJhbiDEkeG6p3UsIG7hur91IHRhIG114buRbiB0xINuZyDEkW/huqFuIFtsLCByXSAgCi8vIGzDqm4geCDEkcahbiB24buLCgovLyBmb3IgKGludCBpID0gMTsgaSA8PSBROyBpKyspIHsgTyhRKQovLyAJaW50IGwsIHIsIHg7IAovLyAJY2luID4+IGwgPj4gciA+PiB4OyAKLy8gCWFbbF0gKz0geDsgTygxKQovLyAJYVtyICsgMV0gLT0geDsgTygxKSAgCi8vIH0KCi8vIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgYVtpXSArPSBhW2kgLSAxXTsgTyhuKSAgCi8vID0+IE8oUSArIE4pCgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsgCgojZGVmaW5lIGZzdCBmaXJzdAojZGVmaW5lIHNuZCBzZWNvbmQgCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsgCnR5cGVkZWYgcGFpcjxpbnQsIGludD4gaWk7IAoKY29uc3QgbGwgTElORiA9IChsbCkxZTE4OyAKY29uc3QgaW50IElORiA9IChpbnQpMWU5OwoKY29uc3QgaW50IE4gPSAoaW50KTFlNSArIDU7ICAKCmludCBuLCBROyAKaW50IGFbTl07ICAKCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IAoJY2luLnRpZSgwKTsgCgljaW4gPj4gbjsgCgljaW4gPj4gUTsgIAoKCWZvciAoaW50IGkgPSAxOyBpIDw9IFE7IGkrKykgewoJCWludCBsLCByLCB4OyAKCQljaW4gPj4gbCA+PiByID4+IHg7ICAKCQlhW2xdICs9IHg7ICAKCQlhW3IgKyAxXSAtPSB4OyAgCgl9CgoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBhW2ldICs9IGFbaSAtIDFdOyAgIAoKCWNvdXQgPDwgIk1hbmcgYSBzYXUgUSB0cnV5IHZhbiBsYTpcbiI7Cglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNvdXQgPDwgYVtpXSA8PCAnICc7IGNvdXQgPDwgJ1xuJzsKfQ==