//#define _GLIBCXX_DEBUG #include #include using namespace std; using namespace atcoder; #define ll long long #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) #define all(a) (a).begin(), (a).end() const ll INF32 = 2e9; const ll INF64 = 4e18; int X; void printYN(bool ok){ if(ok)cout << "Yes" << endl; else cout << "No" << endl; return; } int op (int a, int b){ return max(a, b); } int e() { return 0; } bool f(int x){ return x <= X; } signed main() { int N, Q; cin >> N >> Q; vector A(N); rep(i, N)cin >> A[i]; segtree seg(A); rep(i, Q){ int c; cin >> c >> X; if(c==1){ int num = seg.max_right(0); if(num==N)cout << -1 << endl; else{ cout << num+1 << endl; seg.set(num, 0); } } if(c==2){ int num = seg.min_left(N); if(num==0)cout << -1 << endl; else{ cout << num << endl; seg.set(num-1, 0); } } } return 0; }