SilverLi @ 2023-05-23 17:40:18
#include <bits/stdc++.h>
using namespace std;
#define pi pair<int,int>
#define mk make_pair
#define lt first
#define rt second
const int N=1e5+5;
int pos,root;
struct FHQ {
int l,r,v,pr,si,ad;
//FHQ() {si=1,pr=rand();}
}t[N];
#define lx t[now].l
#define rx t[now].r
inline int NEW(int val) {
t[++pos].pr=rand();
t[pos].si=1;
t[pos].v=val;
return pos;
}
inline void updata(int u) {t[u].si=t[t[u].l].si+t[t[u].r].si+1;}
inline void down(int now) {
if((!t[now].ad)||(!now)) return;
if(lx) t[lx].ad^=1;
if(rx) t[rx].ad^=1;
swap(lx,rx);
t[now].ad=0;
}
pi split(int u,int key) {
if(u==0) return mk(0,0);
down(u);
if(t[u].si<=key) {
pi res=split(t[u].r,key);
t[u].r=res.lt;
updata(u);
return mk(u,res.rt);
}
if(t[u].si>key) {
pi res=split(t[u].l,key);
t[u].l=res.rt;
updata(u);
return mk(res.lt,u);
}
}
int merge(int u,int v) {
if(u==0||v==0) return u+v;
if(t[u].pr>=t[v].pr) {
down(u);
t[u].r=merge(t[u].r,v);
updata(u);
return u;
}
if(t[u].pr<t[v].pr) {
down(v);
t[v].l=merge(u,t[v].l);
updata(v);
return v;
}
}
inline void ins(int val) {
//t[++pos].v=val;
root=merge(root,NEW(val));
}
inline void rev(int l,int r) {
pi res=split(root,l-1);
pi r2=split(res.rt,r-l+1);
t[r2.lt].ad^=1;
int f=merge(res.lt,r2.lt);
root=merge(f,r2.rt);
}
void print(int now) {
down(now);
if(lx) print(lx);
cout<<t[now].v<<' ';
if(rx) print(rx);
}
signed main() {
srand(time(0));
int n,Q; cin>>n>>Q;
for(int i=1;i<=n;++i) ins(i);
while(Q--) {
int l,r; cin>>l>>r;
rev(l,r);
}
print(root);
return 0;
}