#include<bits/stdc++.h>
#define int long long
#define ls(k) tree[k].ch[0]
#define rs(k) tree[k].ch[1]
using namespace std;
const int N=1e5+5;
int n,tot,t,root;
struct node{
int val,cnt,pri,laz,ch[2];
}tree[N];
mt19937 rnd(time(0));
int newnode(int x){
tot++;
tree[tot]={x,1,rnd(),0,0};
return tot;
}
void pushup(int x){
tree[x].cnt=tree[ls(x)].cnt+tree[rs(x)].cnt+1;
}
void pushdown(int x){
if(x&&tree[x].laz){
swap(ls(x),rs(x));
tree[ls(x)].laz^=1;
tree[rs(x)].laz^=1;
tree[x].laz=0;
}
}
int merge(int x,int y){
if(!x||!y){
return x+y;
}
pushdown(x);
pushdown(y);
if(tree[x].pri<tree[y].pri){
rs(x)=merge(rs(x),y);
pushup(x);
return x;
}
ls(y)=merge(x,ls(y));
pushup(y);
return y;
}
void split(int now,int &x,int &y,int k){
if(now==0){
x=y=0;
return ;
}
pushdown(now);
if(tree[now].val<=k){
x=now;
split(rs(now),rs(x),y,k);
}else{
y=now;
split(ls(now),x,ls(y),k);
}
pushup(now);
}
void rev(int l,int r){
int x,y,z;
split(root,x,y,l-1);
split(y,y,z,r-l+1);
tree[y].laz^=1;
root=merge(x,merge(y,z));
}
void ins(int x){
int p,q;
split(root,p,q,x);
root=merge(p,merge(newnode(x),q));
}
void hpr(int now){
if(!now){
return ;
}
pushdown(now);
hpr(ls(now));
cout<<tree[now].val<<" ";
hpr(rs(now));
}
signed main(){
cin>>n>>t;
for(int i=1;i<=n;i++){
ins(i);
}
while(t--){
int l,r;
cin>>l>>r;
rev(l,r);
}
hpr(root);
return 0;
}