#include <stdio.h>
#include <stdlib.h>
#define fin "reconst.in"
#define fout "reconst.out"
#define N 2010
typedef struct poz poz;
struct poz{
int a,b,c;
};
poz *v;
int n,m;
int cmp(const void *a,const void *b){
poz *aa=(poz*)a,*bb=(poz*)b;
if (aa->a>bb->a)
return 1;
if (aa->a<bb->a)
return -1;
if (aa->b>bb->b)
return 1;
if (aa->b<bb->b)
return -1;
return 0;
}
int cmp2(const void *a,const void *b){
poz *aa=(poz*)a,*bb=(poz*)b;
if (aa->b>bb->b)
return 1;
if (aa->b<bb->b)
return -1;
if (aa->a>bb->a)
return 1;
if (aa->a<bb->a)
return -1;
return 0;
}
int nr;
void scan(void){
int i,a,b,c;
freopen(fin,"r",stdin);
freopen(fout,"w",stdout);
scanf("%d%d",&n,&m);
for (i=1;i<=m;++i){
scanf("%d%d%d",&a,&b,&c);
++nr;
v=(poz*)realloc(v,(nr+1)*sizeof(poz));
v[nr]=(poz){a,b,c};
}
}
void sort(void){
qsort(v+1,nr,sizeof(v[0]),cmp);
}
int cun[N];
void insert(int a,int b,int c){
++nr;
v=(poz*)realloc(v,(nr+1)*sizeof(poz));
v[nr]=(poz){a,b,c};
}
void solve(void){
int i,j,nn;
nn=nr;
for (i=1;i<=n;++i){
while (v[i].a==v[i+1].a)
++i;
for (j=i+1;v[j].b==v[i].b && j<=nn;++j){
insert(v[i].b+1,v[j].b,v[j].c-v[i].c);
}
}
qsort(v+1,nr,sizeof(v[0]),cmp2);
for (i=1;i<=n;++i){
while (v[i].b==v[i+1].b)
++i;
for (j=i+1;v[j].b==v[i].b && j<=nn;++j){
insert(v[i].a,v[j].a-1,v[j].c-v[i].c);
}
}
qsort(v+1,nr,sizeof(v[0]),cmp);
for (i=1;i<nn;++i){
if (v[i].a==v[i+1].a && v[i].b==v[i+1].b-1)
cun[v[i+1].b]=v[i+1].c-v[i].c;
/*else{
for (j=i+1;v[j].a==v[i].a && j<=nn;++j){
insert(v[i].b+1,v[j].b,v[j].c-v[i].c);
}
}*/
}
qsort(v+1,nr,sizeof(v[0]),cmp2);
nn=nr;
for (i=1;i<nn;++i){
if (v[i].b==v[i+1].b && v[i].a==v[i+1].a-1)
cun[v[i].a]=v[i+1].c-v[i].c;
/*else{
}*/
}
for (i=1;i<=n;++i)
printf("%d ",cun[i]);
}
void print(void){
exit(0);
}
int main(void){
scan();
sort();
solve();
print();
return 0;
}