rt
#include <bits/stdc++.h>
#define debug(x) (cout << #x << " " << x << "\n")
using namespace std;
using ll = long long;
const int N = 1e5 + 5;
int n, m, tot, val[N], dat[N], sz[N], ch[N][2], root, ans, last, tag[N];
int New(int v) {
val[++ tot] = v;
dat[tot] = rand();
sz[tot] = 1;
return tot;
}
void do_rev(int cur) {
if (!tag[cur]) return ;
swap(ch[cur][0], ch[cur][1]);
tag[ch[cur][0]] ^= 1, tag[ch[cur][1]] ^= 1;
tag[cur] = 0;
}
void pushup(int cur) { sz[cur] = sz[ch[cur][0]] + sz[ch[cur][1]] + 1; }
void pushdown(int cur) {
if (!cur) return ;
do_rev(cur);
if (ch[cur][0]) do_rev(ch[cur][0]);
if (ch[cur][1]) do_rev(ch[cur][1]);
}
void split(int cur, int v, int &x, int &y) {
if (!cur) { x = y = 0; return ; }
pushdown(cur);
if (val[cur] <= v) {
x = cur, split(ch[cur][1], v, ch[cur][1], y);
} else {
y = cur, split(ch[cur][0], v, x, ch[cur][0]);
}
pushup(cur);
}
int merge(int x, int y) {
if (!x || !y) return x + y;
if (dat[x] < dat[y]) {
pushdown(x);
ch[x][1] = merge(ch[x][1], y);
pushup(x);
return x;
} else {
pushdown(y);
ch[y][0] = merge(x, ch[y][0]);
pushup(y);
return y;
}
}
void insert(int v) {
int x, y;
split(root, v, x, y);
int z = New(v);
root = merge(merge(x, z), y);
}
void del(int v) {
int x, y, z;
split(root, v, x, z);
split(x, v - 1, x, y);
y = merge(ch[y][0], ch[y][1]);
root = merge(merge(x, y), z);
}
int rnk(int v) {
int x, y;
split(root, v - 1, x, y);
int ans = sz[x] + 1;
root = merge(x, y);
return ans;
}
int kth(int cur, int k) {
int lsz = sz[ch[cur][0]];
if (k == lsz + 1) return val[cur];
if (k <= lsz) return kth(ch[cur][0], k);
return kth(ch[cur][1], k - lsz - 1);
}
int get_pre(int v) {
int x, y;
split(root, v - 1, x, y);
int ans = kth(x, sz[x]);
root = merge(x, y);
return ans;
}
int get_suc(int v) {
int x, y;
split(root, v, x, y);
int ans = kth(y, 1);
root = merge(x, y);
return ans;
}
void output(int cur) {
if (!cur) return ;
pushdown(cur);
output(ch[cur][0]);
cout << val[cur] << " ";
output(ch[cur][1]);
}
void rev(int l, int r) {
int x, y, z;
split(root, r, x, z);
split(x, l - 1, x, y);
tag[y] ^= 1;
do_rev(y);
root = merge(merge(x, y), z);
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++) insert(i);
while (m --) {
int l, r; cin >> l >> r;
rev(l, r);
}
output(root);
return 0;
}