#include <bits/stdc++.h>
using namespace std;
struct Node {
  int left, right, mid;
  int mx, lx, rx, val;
  int dist() { return right - left + 1; }
} L[200005 * 4];
int pos[1000005];
void Bulid(int step, int l, int r) {
  L[step].left = l;
  L[step].right = r;
  L[step].mid = (l + r) / 2;
  L[step].mx = L[step].rx = L[step].lx = L[step].dist();
  L[step].val = l;
  if (l == r) return;
  Bulid((step << 1), l, L[step].mid);
  Bulid((step << 1 | 1), L[step].mid + 1, r);
}
void Push_Up(int step) {
  L[step].lx =
      L[(step << 1)].lx +
      (L[(step << 1)].lx == L[(step << 1)].dist() ? L[(step << 1 | 1)].lx : 0);
  L[step].rx =
      L[(step << 1 | 1)].rx +
      (L[(step << 1 | 1)].rx == L[(step << 1 | 1)].dist() ? L[(step << 1)].rx
                                                          : 0);
  L[step].mx = L[step].lx;
  L[step].val = L[step].left;
  if (L[(step << 1)].mx > L[step].mx + 1 ||
      (L[(step << 1)].mx > L[step].mx && L[step].mx % 2 == 0)) {
    L[step].mx = L[(step << 1)].mx;
    L[step].val = L[(step << 1)].val;
  }
  if (L[(step << 1)].rx + L[(step << 1 | 1)].lx > L[step].mx + 1 ||
      (L[(step << 1)].rx + L[(step << 1 | 1)].lx > L[step].mx &&
       L[step].mx % 2 == 0)) {
    L[step].mx = L[(step << 1)].rx + L[(step << 1 | 1)].lx;
    L[step].val = L[(step << 1)].right - L[(step << 1)].rx + 1;
  }
  if (L[(step << 1 | 1)].mx > L[step].mx + 1 ||
      (L[(step << 1 | 1)].mx > L[step].mx && L[step].mx % 2 == 0)) {
    L[step].mx = L[(step << 1 | 1)].mx;
    L[step].val = L[(step << 1 | 1)].val;
  }
}
void update(int step, int p, int k) {
  if (L[step].left == L[step].right) {
    if (k) {
      L[step].mx = L[step].rx = L[step].lx = 0;
      L[step].val = 200005;
    } else {
      L[step].mx = L[step].rx = L[step].lx = 1;
      L[step].val = L[step].left;
    }
    return;
  }
  if (p <= L[step].mid)
    update((step << 1), p, k);
  else
    update((step << 1 | 1), p, k);
  Push_Up(step);
}
int main() {
  int n, q;
  while (scanf("%d%d", &n, &q) != EOF) {
    Bulid(1, 1, n);
    int cnt = 1;
    while (q--) {
      int ope, id;
      scanf("%d%d", &ope, &id);
      if (ope == 2)
        update(1, pos[id], 0);
      else {
        int len = L[1].mx, val = L[1].val, ret;
        if (val + len - 1 == n) {
          if (val == 1)
            ret = 1;
          else
            ret = n;
        } else {
          ret = 1;
          int mmax = L[1].lx - 1;
          if ((len - 1) / 2 > mmax) {
            mmax = (len - 1) / 2;
            ret = val + (len - 1) / 2;
          }
          if (L[1].rx - 1 > mmax) {
            mmax = L[1].rx - 1;
            ret = n;
          }
        }
        printf("%d\n", ret);
        pos[id] = ret;
        update(1, ret, 1);
      }
    }
  }
  return 0;
}
