Для начала заметим, что если действие bj можно выполнить, то bj = .
Для каждого bj будем решать задачу по битам. Рассмотрим i-й бит bj, который равен 1. Рассмотрим одно из слагаемых , в котором i-й бит тоже равен 1. Разумно это слагаемое сделать как можно меньшим числом, чтобы при последующих операциях
добавлялось как можно меньше единиц. Обозначим минимальное значение этого слагаемого за cx. Это значение равно
, то есть
-y всех чисел at, у которых i-й бит равен 1.
После предподсчета sx для всех битов x, посчитать ответ для каждого bj довольно просто: если всех sx, таких, что bit(bj, x) = 1, равен bj, ответ «YES», иначе — «NO». Доказательство этого факта остается в качестве упражнения. Также нужно не забыть случай bj = 0 — в этом случае ответ равен «YES», если
.