#include <bits/stdc++.h>
using namespace std;
char buf[1 << 21], *p1 = buf, *p2 = buf;
template <class T>
void read(T &x) {
  x = 0;
  int c = getchar();
  int flag = 0;
  while (c < '0' || c > '9') flag |= (c == '-'), c = getchar();
  while (c >= '0' && c <= '9')
    x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
  if (flag) x = -x;
}
template <class T>
T _max(T a, T b) {
  return b < a ? a : b;
}
template <class T>
T _min(T a, T b) {
  return a < b ? a : b;
}
template <class T>
bool checkmax(T &a, T b) {
  return a < b ? a = b, 1 : 0;
}
template <class T>
bool checkmin(T &a, T b) {
  return b < a ? a = b, 1 : 0;
}
int n, m;
set<int> S;
int a[1000005];
struct seg {
  int l, r, w;
  seg(int l = 0, int r = 0) : l(l), r(r) { w = (l + r) / 2 - l; }
  bool operator<(const seg &rhs) const {
    if (w ^ rhs.w)
      return w > rhs.w;
    else
      return l < rhs.l;
  }
};
set<seg> T;
int hcy = 0, q = 0;
void init() {
  read(n);
  read(m);
}
void insert(int idx) {
  if (S.empty()) {
    S.insert(1);
    a[idx] = 1;
  } else {
    int dis = 0, pos = 0;
    if (*S.begin() > 1) {
      if (checkmax(dis, *S.begin() - 1)) pos = 1;
    }
    if (!T.empty()) {
      seg temp = *T.begin();
      if (temp.l < temp.r) {
        if (checkmax(dis, temp.w)) pos = temp.w + temp.l;
      }
    }
    if (*S.rbegin() < n) {
      if (checkmax(dis, n - *S.rbegin())) pos = n;
    }
    a[idx] = pos;
    if (*S.begin() > pos) {
      T.insert(seg(pos, *S.begin()));
      S.insert(pos);
    } else if (pos > *S.rbegin()) {
      T.insert(seg(*S.rbegin(), pos));
      S.insert(pos);
    } else {
      int r = *S.lower_bound(pos);
      int l = *(--S.upper_bound(pos));
      T.erase(seg(l, r));
      T.insert(seg(l, pos));
      T.insert(seg(pos, r));
      S.insert(pos);
    }
  }
}
void remove(int idx) {
  int pos = a[idx];
  a[idx] = 0;
  if ((int)S.size() == 1)
    S.erase(pos);
  else if (*S.begin() == pos) {
    S.erase(pos);
    int x = *S.begin();
    T.erase(seg(pos, x));
  } else if (*S.rbegin() == pos) {
    S.erase(pos);
    int x = *(--S.end());
    T.erase(seg(x, pos));
  } else {
    S.erase(pos);
    int r = *S.lower_bound(pos);
    int l = *(--S.upper_bound(pos));
    T.erase(seg(l, pos));
    T.erase(seg(pos, r));
    T.insert(seg(l, r));
  }
}
void solve() {
  int opt, idx;
  while (m--) {
    read(opt);
    read(idx);
    if (opt == 1) {
      insert(idx);
      printf("%d\n", a[idx]);
    } else {
      remove(idx);
    }
  }
}
int main() {
  init();
  solve();
  return 0;
}
