Петя и его друг, робот Petya++, любят решать увлекательные математические задачи.
Однажды Petya++ придумал числа \(n\) и \(x\) и написал на доске \(\)n\ \&\ (n+1)\ \&\ \dots\ \&\ m = x,\(\) где \(\&\) обозначает операцию побитового И. Затем он предложил своему другу Пете найти такое минимальное \(m\) (\(m \ge n\)), что равенство на доске выполняется.
К сожалению, Петя не смог решить эту задачу в уме и решил прибегнуть к помощи компьютера. Он довольно быстро написал программу и нашел ответ.
А справитесь ли вы с этой непростой задачей?
Выходные данные
Для каждого набора входных данных выведите одно целое число \(m\) — минимальное число такое, что равенство на доске будет выполняться.
Если равенство не выполнится ни при каком \(m\), то выведите вместо этого \(-1\).
Можно показать, что если требуемое \(m\) существует, то оно не превосходит \(5 \cdot 10^{18}\).
Примечание
В первом примере \(10\ \&\ 11 = 10\), но \(10\ \&\ 11\ \&\ 12 = 8\), поэтому ответ равен \(12\).
Во втором примере \(10 = 10\), поэтому ответ равен \(10\).
В третьем примере можно убедиться, что требуемого \(m\) не существует, поэтому необходимо вывести \(-1\).
Примеры
| № | Входные данные | Выходные данные |
|
1
|
5 10 8 10 10 10 42 20 16 1000000000000000000 0
|
12
10
-1
24
1152921504606846976
|