#include <bits/stdc++.h>
using namespace std;
template <class T>
T f_min(T x, T y) {
  return x < y ? x : y;
}
template <class T>
T f_max(T x, T y) {
  return x > y ? x : y;
}
template <class T>
T f_abs(T x) {
  return x < 0 ? -x : x;
}
int N, M;
struct Pack {
  int s, l;
  int get_l() {
    if (s == 1 || s + l - 1 == N)
      return l;
    else
      return (l + 1) / 2;
  }
  bool friend operator<(Pack a, Pack b) {
    int al = a.get_l(), bl = b.get_l();
    if (al != bl)
      return al > bl;
    else
      return a.s < b.s;
  }
};
struct Node {
  int s, e, l, r;
  Pack pk;
};
Node node[800000];
void build_tree(int loc, int s, int e) {
  node[loc].s = s;
  node[loc].e = e;
  node[loc].l = node[loc].r = e - s + 1;
  node[loc].pk.s = s;
  node[loc].pk.l = e - s + 1;
  if (s == e) return;
  int mid = (s + e) >> 1;
  build_tree(loc << 1, s, mid);
  build_tree(loc << 1 | 1, mid + 1, e);
}
void get_data() {
  scanf("%d%d", &N, &M);
  build_tree(1, 1, N);
}
map<int, int> mp;
void ins(int loc, int s, int v) {
  if (node[loc].s == node[loc].e) {
    node[loc].l = node[loc].r = v;
    node[loc].pk.s = s;
    node[loc].pk.l = v;
    return;
  }
  int mid = (node[loc].s + node[loc].e) >> 1;
  if (s <= mid)
    ins(loc << 1, s, v);
  else
    ins(loc << 1 | 1, s, v);
  Pack t;
  t.s = mid - node[loc << 1].r + 1;
  t.l = node[loc << 1].r + node[loc << 1 | 1].l;
  node[loc].pk = f_min(t, f_min(node[loc << 1].pk, node[loc << 1 | 1].pk));
  if (node[loc << 1].l == mid - node[loc].s + 1)
    node[loc].l = node[loc << 1].l + node[loc << 1 | 1].l;
  else
    node[loc].l = node[loc << 1].l;
  if (node[loc << 1 | 1].r == node[loc].e - mid)
    node[loc].r = node[loc << 1 | 1].r + node[loc << 1].r;
  else
    node[loc].r = node[loc << 1 | 1].r;
}
void run() {
  mp.clear();
  int a, b;
  while (M--) {
    scanf("%d%d", &a, &b);
    if (a == 1) {
      Pack t = node[1].pk;
      int loc;
      if (t.s == 1)
        loc = 1;
      else if (t.s + t.l - 1 == N)
        loc = N;
      else
        loc = (t.l + 1) / 2 + t.s - 1;
      printf("%d\n", loc);
      mp[b] = loc;
      ins(1, loc, 0);
    } else {
      ins(1, mp[b], 1);
    }
  }
}
int main() {
  get_data();
  run();
  return 0;
}
