nclude <bits/stdc++.h>
using namespace std;
const int maxn = 1e3 + 10;
struct Node {
int val, cnt;
int lc, rc;
}tree[maxn];
int tot = 0;
int create(int x) {
tree[++tot] = (Node){x, 1, 0, 0};
return tot;
}
void insert(int &u, int x) {
if (!u) {
create(x);
return;
} if (x == tree[u].val) {
tree[u].cnt++;
return;
} else if (x < tree[u].val) insert(tree[u].lc, x);
else insert(tree[u].rc, x);
}
int n, rt, x, q, op;
void remove(int &u, int x) {
if (!u) return;
else if (x < tree[u].val) remove(tree[u].lc, x);
else if (x > tree[u].val) remove(tree[u].rc, x);
else {
if (!tree[u].lc) u = tree[u].rc;
else if (!tree[u].rc) u = tree[u].lc;
else {
int v = tree[u].rc;
while (tree[v].lc) v = tree[v].lc;
swap(tree[u].val, tree[v].val);
remove(tree[u].rc, x);
}
}
}
void dfs(int u) {
if (!u) return;
dfs(tree[u].lc);
cout << tree[u].val << ' ';
dfs(tree[u].rc);
}
signed main() {
cin >> n >> q;
for (int i = 1; i <= n; ++i) {
scanf("%d", &x);
insert(rt, x);
}
while (q--) {
scanf("%d%d", &op, &x);
if (op == 1) {
insert(rt, x);
} else {
remove(rt, x);
}
}
dfs(rt);
}