#include #include #include int op(int a, int b) { return a > b ? a : b; } int e() { return 0; } int main() { int N, Q; std::cin >> N >> Q; std::vector A(N); for (int &a : A) std::cin >> a; atcoder::segtree seg(A); while (Q--) { int c, x; std::cin >> c >> x; if (seg.all_prod() <= x) { std::cout << -1 << std::endl; continue; } if (c == 1) { int r = seg.max_right(0, [x](int y){ return y <= x; }); std::cout << r + 1 << std::endl; seg.set(r, 0); } else { int l = seg.min_left(N, [x](int y){ return y <= x; }); std::cout << l << std::endl; seg.set(l - 1, 0); } } }