#include #include #include #include using namespace std; using namespace atcoder; using ll = long long; int op(int a, int b) { return max(a, b); } int e() { return -1; } int target; bool f(int v) { return v < target; } //制約確認 int main(){ int N, Q; cin >> N >> Q; assert(1 <= N && N <= 200000); assert(1 <= Q && Q <= 200000); vector A(N, 0); for(int i = 0; i < N; i++){ cin >> A[i]; assert(1 <= A[i] && A[i] <= 1e9); } segtree seg(A); for(int q = 0; q < Q; q++){ int c; cin >> c >> target; assert(1 <= c && c <= 2); assert(1 <= target && target <= 1e9); target++; if(c == 1){ auto ret = seg.max_right(0); if(ret >= N){ cout << -1 << endl; }else{ cout << ret + 1 << endl; seg.set(ret, 0); } } if(c == 2){ auto ret = seg.min_left(N); ret--; if(ret < 0){ cout << -1 << endl; }else{ cout << ret + 1 << endl; seg.set(ret, 0); } } } return 0; }