#include <bits/stdc++.h>
using namespace std;
const int maxn = 200010;
int mx[maxn << 2], ls[maxn << 2], rs[maxn << 2], lp[maxn << 2], rp[maxn << 2];
bool col[maxn << 2];
void make(int rt, int l, int r) {
  lp[rt] = l;
  rp[rt] = r;
  ls[rt] = rs[rt] = r - l + 1;
  mx[rt] = (ls[rt] - 1) / 2;
  col[rt] = true;
}
void build(int l, int r, int rt) {
  make(rt, l, r);
  if (l == r) return;
  int m = l + r >> 1;
  build(l, m, rt << 1);
  build(m + 1, r, rt << 1 | 1);
}
void pushup(int rt, int l, int r) {
  int L = rt << 1, R = L + 1, m = l + r >> 1;
  mx[rt] = mx[L], lp[rt] = lp[L], rp[rt] = rp[L], col[rt] = col[L];
  if (!col[rt] || (rs[L] + ls[R] - 1) / 2 > mx[rt]) {
    mx[rt] = rs[L] + ls[R] - 1 >> 1;
    lp[rt] = m - rs[L] + 1;
    rp[rt] = m + ls[R];
    col[rt] = (lp[rt] <= rp[rt]);
  }
  if (!col[rt] || mx[R] > mx[rt]) {
    mx[rt] = mx[R];
    lp[rt] = lp[R];
    rp[rt] = rp[R];
    col[rt] = col[R];
  }
  ls[rt] = ls[L] + (ls[L] == m - l + 1) * ls[R];
  rs[rt] = rs[R] + (rs[R] == r - m) * rs[L];
}
int n, m;
void update(int p, int l = 0, int r = n - 1, int rt = 1) {
  if (l == r) {
    col[rt] ^= 1;
    if (col[rt])
      make(rt, l, r);
    else
      ls[rt] = rs[rt] = 0;
    mx[rt] = -1;
    return;
  }
  int m = l + r >> 1;
  if (p <= m)
    update(p, l, m, rt << 1);
  else
    update(p, m + 1, r, rt << 1 | 1);
  pushup(rt, l, r);
}
int pos[1000010];
int main() {
  scanf("%d%d", &n, &m);
  build(0, n - 1, 1);
  int op, id;
  while (m--) {
    scanf("%d%d", &op, &id);
    if (op == 2) {
      update(pos[id]);
    } else {
      int a = ls[1] - 1, b = rs[1] - 1, c = mx[1];
      if (a >= b && a >= c) {
        printf("1\n");
        pos[id] = 0;
        update(0);
      } else if (c >= b) {
        int t = (lp[1] + rp[1]) / 2;
        pos[id] = t;
        update(t);
        printf("%d\n", t + 1);
      } else {
        printf("%d\n", n);
        pos[id] = n - 1;
        update(n - 1);
      }
    }
  }
  return 0;
}
