#include<iostream>
using namespace std;
const int N=100010;
int a[N],b[N];//a为原数组,b为差分数组
int n,m;
void insert(int l,int r,int c)
{
b[l]+=c;
b[r+1]-=c;
}
int main()
{
scanf("%d%d",&n,&m);
//读取n个整数
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
//b数组初始化为a数组
for(int i=1;i<=n;i++)insert(i,i,a[i]);
//插入原数组
while(m--)
{
int l=0,r=0,c=0;
cin>>l>>r>>c;
//b数组全部+c
insert(l,r,c);
}
//b数组前缀和就得到a[]
for(int i=1;i<=n;i++) a[i]=b[i]+a[i-1];
for(int i=1;i<=n;i++)printf("%d ",a[i]);
return 0;
}