#pragma GCC optimize("Ofast") #pragma GCC target("avx2") char*mmap(); static char wbuf[1<<25]; #define wbuf_end (wbuf+sizeof wbuf) #define rd(v) long v=0;{long _c;while(_c=*rp++-48,_c>=0)v=v*10+_c;} #define rep(v,e) for(long v=0;v>16; *(unsigned long*)&v=rb; b[j]=v; } } static void radix_sort(S*a,int n){ static S b[200000]; radix_sort_aux(a,b,n); radix_sort_aux(b,a,n); radix_sort_aux(a,b,n); radix_sort_aux(b,a,n); } static S a[200000]; static int s[200000],z[200000]; main(){ mkbase10(); char*rp=mmap(0l,1l<<25,1,2,0,0ll); rd(n); rd(q); rep(i,q){ rd(l); a[i].l=l-1; rd(r); a[i].r=-r; rd(b); a[i].b=b; } radix_sort(a,q); long fb=0,fi=0; rep(i,q){ int b=a[i].b; int l=a[i].l; int r=-a[i].r; int f=(fb==b&&fi>=l); while(1){ int t=l; while(t=r){ break; } f=1; s[l]=l+1; z[l]=b; if(!(fb==b&&fi>=l)){ fb=b; fi=l; } } if(!f){ write(1,"-1\n",3); exit(0); } } char*wp=wbuf_end; *--wp='\n'; rrep(i,n){ int x=z[i]; if(x){ do{ *(int*)(wp-=4)=base10x4[x%10000]; }while(x/=10000); while(*wp=='0')++wp; }else{ *--wp='1'; } *--wp=' '; } ++wp; write(1,wp,wbuf_end-wp); _exit(0); }