Штирлиц получил от штаба T чисел. «Шифровка», — подумал Мюллер. «Простые числа», — подумал Штирлиц. Но не всё так просто!
Для шифрования штаб использует побитовое исключающее «ИЛИ». Пусть есть два числа, представим их в двоичной записи. Тогда результатом этой операции будет число, каждый бит двоичной записи которого является результатом исключающего «ИЛИ» соответствующих позиций у данных двух чисел: для битов «0» и «0» или битов «1» и «1» результат равен «0», а для битов «0» и «1» или «1» и «0» — результат равен «1». Например, результатом побитового исключающего «ИЛИ» и у чисел 10012 и 01012 будет 11002.
Штаб берёт простое число и другое неотрицательное целое число (ключ шифрования), использует побитовое исключающее «ИЛИ» между ними, и таким образом получает результат. При этом ключи шифрования могут быть разными для разных чисел. Но есть одна проблема — Штирлиц забыл ключи шифрования штаба и поэтому не может расшифровать ни одно из чисел! Но, немного подумав, Штирлиц догадался, что может применить используемую штабом операцию ещё раз, чтобы получить простые числа. Теперь для каждого из чисел в послании ему нужно найти минимальный возможный ключ, операция с которым приведёт его к простому числу.
Мюллер уже на носу, поэтому Штирлиц попросил у Вас помощи с таким важным заданием.
Исходные данные
В первой строке дано целое число T — количество чисел в послании от штаба (1 ≤ T ≤ 105).
В следующих T строках дано по одному целому числу ai — числа из послания (0 ≤ ai ≤ 1 048 575).
Результат
Выведите T неотрицательных целых чисел, каждое в новой строке — наименьший ключ шифрования для каждого из зашифрованных чисел в порядке ввода.
Пример
исходные данные | результат |
---|
3
5
6
1
| 0
1
2
|
Автор задачи: Вадим Баринов
Источник задачи: Уральская командная олимпиада по программированию 2022