#include <iostream>
using namespace std;
const int N=1e5+10;
int A[N],B[N]; // A[n]前缀和数组,B[N]差分数组
int m,n;
int l,r,c;
int main() {
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&A[i]);
B[i]=A[i]-A[i-1];
}
// 加入在A[N]的l~r之间+c,那么等价于B[l]+c,B[r+1]-c ,好处在于将r-1+1次运算直接缩减为2次
while(m--){
scanf("%d%d%d",&l,&r,&c);
B[l]+=c;
B[r+1]-=c;
}
for(int i=1;i<=n;i++){
A[i]=A[i-1]+B[i];
printf("%d ",A[i]);
}
return 0;
}