#include <bits/stdc++.h>
using namespace std;
struct przedzial {
  int l, p;
};
void Rob_przedzialy(vector<bool>& z, vector<przedzial>& P) {
  int n = z.size();
  for (int l = 0; l < n;) {
    if (z[l]) {
      ++l;
      continue;
    }
    int p = l;
    while (p < n && !z[p]) ++p;
    --p;
    P.push_back({l, p});
    l = p + 1;
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  int l, b, f, n;
  cin >> l >> b >> f >> n;
  vector<bool> z(l, false);
  vector<przedzial> gdzie(n);
  for (int i = 0; i < n; ++i) {
    int op, par;
    cin >> op >> par;
    if (op == 1) {
      vector<przedzial> P;
      Rob_przedzialy(z, P);
      int j = 0;
      przedzial x = {-1, -1};
      while (j < P.size()) {
        int d = P[j].p - P[j].l + 1;
        if (d >= par) {
          if (P[j].l == 0 && P[j].p == l - 1) {
            x = {0, par - 1};
            break;
          }
          if (P[j].l == 0 && P[j].p != l - 1) {
            if (d >= par + f) {
              x = {0, par - 1};
              break;
            }
          }
          if (P[j].l != 0 && P[j].p == l - 1) {
            if (d >= par + b) {
              x = {P[j].l + b, P[j].l + b + par - 1};
              break;
            }
          }
          if (P[j].l != 0 && P[j].p != l - 1) {
            if (d >= par + b + f) {
              x = {P[j].l + b, P[j].l + b + par - 1};
              break;
            }
          }
        }
        ++j;
      }
      if (x.l == -1)
        cout << "-1" << endl;
      else {
        for (int k = x.l; k <= x.p; ++k) z[k] = true;
        gdzie[i] = x;
        cout << x.l << endl;
      }
    } else
      for (int j = gdzie[par - 1].l; j <= gdzie[par - 1].p; ++j) z[j] = false;
  }
  return 0;
}
