//セグ木(二分探索)O(N(logN)^2) #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 main(){ int N, Q; cin >> N >> Q; vector A(N, 0); for(int i = 0; i < N; i++) cin >> A[i]; segtree seg(A); for(int q = 0; q < Q; q++){ int c, target; cin >> c >> target; target++; if(c == 1){ int l = 0, r = N; while(l < r){ int m = (l + r + 1) / 2; auto ret = seg.prod(l, m); if(ret >= target) r = m - 1; else l = m; } if(l >= N){ cout << -1 << endl; }else{ cout << l + 1 << endl; seg.set(l, 0); } } if(c == 2){ int l = 0, r = N; while(l < r){ int m = (l + r) / 2; auto ret = seg.prod(m, r); if(ret >= target) l = m + 1; else r = m; } l--; if(l < 0){ cout << -1 << endl; }else{ cout << l + 1 << endl; seg.set(l, 0); } } } return 0; }