#include #include #include #include using namespace std; #define MAX 101000 int n, k; int a[MAX]; map nxt; map prv; int main() { scanf("%d %d", &n, &k); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } for (int i = 1; i < n; i++) { nxt[a[i]] = a[i + 1]; } for (int i = 2; i <= n; i++) { prv[a[i]] = a[i - 1]; } int last = a[n]; for (int i = 1; i <= k; i++) { int type; scanf("%d", &type); if (type == 1) { int x, y; scanf("%d %d", &x, &y); tie(nxt[x], prv[x], nxt[prv[y]], prv[y]) = {y, prv[y], x, x}; } else if (type == 2) { int x; scanf("%d", &x); nxt[last] = x; prv[x] = last; last = x; } else if (type == 3) { int x; scanf("%d", &x); tie(nxt[prv[x]], prv[nxt[x]]) = {nxt[x], prv[x]}; if (last == x) last = prv[x]; nxt[x] = prv[x] = 0; } } vector ans; int x = last; while (x != 0) { ans.push_back(x); x = prv[x]; } printf("%d\n", (int)ans.size()); for (int i = (int)ans.size() - 1; i >= 0; i--) { printf("%d ", ans[i]); } printf("\n"); return 0; }