#include <bits/stdc++.h>
using namespace std;
const int maxn = 222222;
int lsum[maxn << 2], rsum[maxn << 2], sum[maxn << 2];
int pos[1111111];
void build(int l, int r, int rt) {
  sum[rt] = lsum[rt] = rsum[rt] = r - l + 1;
  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 m) {
  lsum[rt] = lsum[rt << 1];
  rsum[rt] = rsum[rt << 1 | 1];
  if (lsum[rt] == m - (m >> 1)) lsum[rt] += lsum[rt << 1 | 1];
  if (rsum[rt] == (m >> 1)) rsum[rt] += rsum[rt << 1];
  sum[rt] = max(max(sum[rt << 1], sum[rt << 1 | 1]),
                rsum[rt << 1] + lsum[rt << 1 | 1]);
}
void update(int p, int c, int l, int r, int rt) {
  if (l == r) {
    sum[rt] += c;
    lsum[rt] = rsum[rt] = sum[rt];
    return;
  }
  int m = (l + r) >> 1;
  if (p <= m)
    update(p, c, l, m, rt << 1);
  else
    update(p, c, m + 1, r, rt << 1 | 1);
  PushUp(rt, r - l + 1);
}
int query(int p, int l, int r, int rt) {
  if (l == r) return l;
  int m = (l + r) >> 1;
  if (sum[rt << 1] >= p)
    return query(p, l, m, rt << 1);
  else if (rsum[rt << 1] + lsum[rt << 1 | 1] >= p)
    return m - rsum[rt << 1] + 1;
  else if (sum[rt << 1 | 1] >= p)
    return query(p, m + 1, r, rt << 1 | 1);
}
int main() {
  int n, m;
  int q, num, p;
  scanf("%d %d", &n, &m);
  build(1, n, 1);
  for (int i = 0; i < m; i++) {
    scanf("%d %d", &q, &num);
    if (q == 1) {
      if (lsum[1] > ((sum[1] - 1) >> 1) && lsum[1] >= rsum[1]) {
        p = 1;
        pos[num] = p;
      } else if (rsum[1] && rsum[1] > ((sum[1] - 1) >> 1) + 1) {
        p = n;
        pos[num] = p;
      } else {
        p = sum[1] & 1 ? query(sum[1], 1, n, 1) : query(sum[1] - 1, 1, n, 1);
        p += (sum[1] - 1) >> 1;
        pos[num] = p;
      }
      update(p, -1, 1, n, 1);
      printf("%d\n", p);
    } else {
      update(pos[num], 1, 1, n, 1);
    }
  }
  return 0;
}
