#include <bits/stdc++.h>
using namespace std;
int N, cartomap[1000006], rtol[200006], ltor[200006];
set<pair<int, int> > validp;
struct ss {
  int left, right;
  int nxt, dist;
  ss() {}
  ss(int l, int r) {
    left = l, right = r;
    if (l == 1) {
      nxt = 1;
      dist = r - l + 1;
      return;
    }
    if (r == N) {
      nxt = N;
      dist = N - l + 1;
      return;
    }
    nxt = (r + l) / 2;
    dist = nxt - l + 1;
  }
  bool operator<(const ss& p) const {
    if (dist != p.dist) return dist < p.dist;
    return nxt > p.nxt;
  }
};
priority_queue<ss> PQ;
void allot(int left, int right) {
  PQ.push(ss(left, right));
  validp.insert(make_pair(left, right));
  rtol[right] = left;
  ltor[left] = right;
}
void erase(int left, int right) { validp.erase(make_pair(left, right)); }
void init() {
  validp.clear();
  while (!PQ.empty()) PQ.pop();
  allot(1, N);
  ltor[0] = rtol[0] = ltor[N + 1] = rtol[N + 1] = -1;
}
int give() {
  ss slot;
  int left, right, nxt;
  pair<int, int> p;
  while (!PQ.empty()) {
    slot = PQ.top();
    PQ.pop();
    left = slot.left, right = slot.right;
    p = make_pair(left, right);
    if (validp.find(p) == validp.end()) continue;
    erase(left, right);
    nxt = slot.nxt;
    if (left <= nxt - 1) allot(left, nxt - 1);
    if (nxt + 1 <= right) allot(nxt + 1, right);
    ltor[nxt] = rtol[nxt] = -1;
    return nxt;
  }
  return -1;
}
void take(int nxt) {
  int left, right, ll, rl;
  ll = rl = 0;
  if (rtol[nxt - 1] != -1) ll = nxt - rtol[nxt - 1];
  if (ltor[nxt + 1] != -1) rl = ltor[nxt + 1] - nxt;
  if (ll) {
    left = nxt - ll;
    right = nxt - 1;
    erase(left, right);
  }
  if (rl) {
    left = nxt + 1;
    right = nxt + rl;
    erase(left, right);
  }
  allot(nxt - ll, nxt + rl);
}
int main() {
  int Q;
  int op, car, slot;
  while (scanf("%d %d", &N, &Q) != EOF) {
    init();
    while (Q--) {
      scanf("%d %d", &op, &car);
      if (op == 1) {
        slot = give();
        cartomap[car] = slot;
        printf("%d\n", slot);
      } else {
        slot = cartomap[car];
        take(slot);
      }
    }
  }
  return 0;
}
