//Accepted    804 KB    40 ms
 //整个题,都是坑
 //1.The first line of each data set contains exactly one integer n,
 //1 <= n <= 8000, equal to the number of colored segments
 //意思是:n表示染色线段的条数,而不是区间的总长度
 //2.x1 and x2 indicate the left endpoint and right endpoint of the segment, c indicates the color of the segment.
 //x1 ,x2 表示染色区间的端点位置,而染色的是区间
 #include <cstdio>
 #include <cstring>
 #include <iostream>
 #include <queue>
 #include <cmath>
 #include <algorithm>
 using namespace std;
 /**
   * This is a documentation comment block
   * 如果有一天你坚持不下去了,就想想你为什么走到这儿!
   * @authr songt
   */
 ;
 int color[imax_n];
 struct node
 {
     int l,r;
     int c;
     int change;
 }f[imax_n*];
 void build(int t,int l,int r)
 {
     f[t].l=l;
     f[t].r=r;
     f[t].c=;
     f[t].change=;
     if (l==r)
     {
         return ;
     }
     ;
     build(*t,l,mid);
     build(*t+,mid+,r);
 }
 void update(int t,int l,int r,int c)
 {
     if (f[t].l==l && f[t].r==r)
     {
         f[t].c=c;
         f[t].change=;
         return ;
     }
     )
     {
         f[*t].c=f[t].c;
         f[*t+].c=f[t].c;
         f[*t].change=f[*t+].change=;
         f[t].change=;
     }
     ;
     *t,l,r,c);
     else
     {
         *t+,l,r,c);
         else
         {
             update(*t,l,mid,c);
             update(*t+,mid+,r,c);
         }
     }
 }
 int query(int t,int k)
 {
     ;
     if (f[t].l==f[t].r && f[t].l==k)
     {
         return f[t].c;
     }
     )
     {
         return f[t].c;
     }
     ;
     *t,k);
     *t+,k);
 }
 int n;
 int x,y,c;
 void slove()
 {
     build(,,);
     ;i<=n;i++)
     {
         scanf("%d%d%d",&x,&y,&c);
         x++;
         c++;
         if (x>y) continue ;
         update(,x,y,c);
     }
     int t1,t2;
     t1=;
     memset(color,,sizeof(color));
     ;i<=;i++)
     {
         t2=query(,i);
         )
         {
             t1=t2;
             continue ;
         }
         if (t2==t1) continue;
         color[t2]++;
         t1=t2;
     }
     ;i<=;i++)
     )
     {
         printf(,color[i]);
     }
 }
 int main()
 {
     while (scanf("%d",&n)!=EOF)
     {
         slove();
         printf("\n");
     }
     ;
 }
05-11 18:16