- #include <bits/stdc++.h>
- using namespace std;
- struct node
- {
- int l,r;
- } d[110000];
- bool cmp(node a,node b)
- {
- if(a.l!=b.l)return a.l<b.l;
- else return a.r>b.r;
- }
- int main()
- {
- int a[110000];
- int b[110000];
- int t,n,m,j,p;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d%d",&n,&m);
- memset(b,0,sizeof(b));
- for(int i=0; i<m; i++)
- {
- scanf("%d%d",&d[i].l,&d[i].r);
- }
- sort(d,d+m,cmp);
- // d[m].l=n+1;
- j=0;
- p=1;
- for(int i=1; i<=n; i++)
- {
- while(d[j].r<i)
- {
- p=1;
- j++;
- }
- if(d[j].l>i||j>=m)
- {
- a[i]=1;
- b[1]=i;
- }
- else
- {
- while(b[p]>=d[j].l&&b[p]<=d[j].r)
- {
- p++;
- }
- // printf("%d**%d\n",p,b[p]);
- a[i]=p;
- b[p]=i;
- }
- if(i==n)printf("%d\n",a[i]);
- else printf("%d ",a[i]);
- }
- }
- return 0;
- }