#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=100005,inf=1<<30;
int sz[N],cnt[N],ch[N][2],fa[N],root,a[N],key[N],tot,lazy[N];
int n,m;
int judge(int u){
return ch[fa[u]][1]==u;
}
void pushup(int u){
sz[u]=sz[ch[u][0]]+sz[ch[u][1]]+cnt[u];
}
void pushdown(int u){
if(lazy[u]){
swap(ch[u][0],ch[u][1]);
lazy[ch[u][0]]^=1;
lazy[ch[u][1]]^=1;
lazy[u]=0;
}
}
void link(int u,int f,int d){
ch[f][d]=u;
fa[u]=f;
}
int node(int num,int c){
key[++tot]=num;
sz[tot]=cnt[tot]=c;
return tot;
}
int build(int l,int r){
if(l>r){
return 0;
}
int mid=(l+r)>>1;
int u=node(a[mid],1);
int ls=build(l,mid-1);
if(ls){
link(ls,u,0);
}
int rs=build(mid+1,r);
if(rs){
link(rs,u,1);
}
pushup(u);
return u;
}
void init(){
root=node(-inf,0);
int u=node(inf,1);
link(u,root,1);
link(build(1,n),u,0);
}
void rotate(int u){
int j=judge(u),fat=fa[u];
int anc=fa[fat],jf=judge(fat);
if(!anc){
fa[u]=0;
}
else{
link(u,anc,jf);
}
link(ch[u][!j],fat,j);
link(fat,u,!j);
pushup(fat);
pushup(u);
}
void splay(int u,int f){
for(;fa[u]!=f;rotate(u)){
int fat=fa[u],anc=fa[fat];
if(anc!=f){
if(judge(u)==judge(fat)){
rotate(fat);
}
else{
rotate(u);
}
}
}
if(!f){
root=u;
}
}
int kth(int u){
int now=root;
for(;;){
pushdown(now);
if(ch[now][0]&&u<=sz[ch[now][0]]){
now=ch[now][0];
}
else{
if(u<=sz[ch[now][0]]+cnt[now]){
return now;
}
u-=sz[ch[now][0]]+cnt[now];
now=ch[now][1];
}
}
}
void reverse(int l,int r){
int kl=kth(l-1),kr=kth(r+1);
splay(kl,0);
splay(kr,kl);
lazy[ch[kr][0]]^=1;
}
void output(int u){
pushdown(u);
if(ch[u][0]){
output(ch[u][0]);
}
if(key[u]>0&&key[u]<=n){
printf("%d ",key[u]);
}
if(ch[u][1]){
output(ch[u][1]);
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
a[i]=i;
}
init();
int x,y;
for(int i=1;i<=m;i++){
scanf("%d%d",&x,&y);
reverse(x,y);
}
output(root);
return 0;
}