#include <bits/stdc++.h>
using namespace std;
const int N = (int)1e6 + 9;
set<pair<int, int> > len, pos;
int n, m;
void add_seg(int L, int R) {
  if (L > R) return;
  int sz = R - L + 1;
  pos.insert(make_pair(L, sz));
  if (L != 1 && R != n) sz = (sz + 1) / 2;
  len.insert(make_pair(sz, L));
}
void rem_seg(int L, int R) {
  if (L > R) return;
  int sz = R - L + 1;
  pos.erase(make_pair(L, sz));
  if (L != 1 && R != n) sz = (sz + 1) / 2;
  len.erase(make_pair(sz, L));
}
int loc[N];
void add(int x) {
  auto it = len.end();
  --it;
  int opt = it->first;
  it = len.lower_bound(make_pair(opt, -1));
  auto segt = pos.lower_bound(make_pair(it->second, -1));
  int L = segt->first;
  int R = L + (segt->second) - 1;
  rem_seg(L, R);
  int M = (L + R) / 2;
  if (L == 1)
    M = 1;
  else if (R == n)
    M = R;
  cout << M << "\n";
  loc[x] = M;
  add_seg(L, M - 1);
  add_seg(M + 1, R);
}
void rem(int x) {
  int pp = loc[x];
  loc[x] = 0;
  int L = pp, R = pp;
  auto v2 = pos.lower_bound(make_pair(pp + 1, -1));
  if (v2 != pos.end() && v2->first == pp + 1) {
    R = (v2->first) + (v2->second) - 1;
    rem_seg(v2->first, (v2->first) + (v2->second) - 1);
  }
  v2 = pos.lower_bound(make_pair(pp + 1, -1));
  if (v2 != pos.begin()) {
    --v2;
    if ((v2->first) + (v2->second) - 1 == pp - 1) {
      L = v2->first;
      rem_seg(v2->first, pp - 1);
    }
  }
  add_seg(L, R);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ;
  cin >> n >> m;
  add_seg(1, n);
  int typ;
  int id;
  for (int i = 0; i < m; i++) {
    cin >> typ >> id;
    if (typ == 1)
      add(id);
    else
      rem(id);
  }
  return 0;
}
