https://ac.nowcoder.com/acm/contest/57359/E
#include<bits/stdc++.h>
using namespace std;
int pos[1005],maxnum[1005],ninum[1005];
struct node{
int l,r;
int k;
}a[1005];
bool cmp(node x,node y){
return x.r-x.l<y.r-y.l;
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>a[i].l>>a[i].r>>a[i].k;
}
for(int i=1;i<=m;i++){
for(int j=i+1;j<=m;j++){
if(a[i].l==a[j].l&&a[i].r==a[j].r&&a[i].k!=a[j].k){
cout<<"-1";
return 0;
}
}
}
sort(a+1,a+m+1,cmp);
for(int i=1;i<=n;i++){
pos[i]=i;
maxnum[i]=i;
ninum[i]=0;
}
for(int i=1;i<=m;i++){
if(a[i].l==a[i].r&&a[i].k==1){
cout<<"-1";
return 0;
}
ninum[0]=0;
for(int j=a[i].l;j<=a[i].r;j++){
ninum[0]+=ninum[j];
}
if(ninum[0]%2!=a[i].k){
swap(pos[maxnum[a[i].l]],pos[maxnum[a[i].l]+1]);
ninum[a[i].l]++;
}
maxnum[a[i].l]=a[i].r;
}
int ans[1005];
for(int i=1;i<=n;i++) ans[pos[i]]=i;
for(int i=1;i<=n;i++){
cout<<ans[i]<<" ";
}
}