Олимпиадный тренинг

Задача . F. Сделай их похожими


Назовем два числа похожими, если в их двоичных представлениях одинаковое количество цифр равно \(1\). Например:

  • \(2\) и \(4\) похожи (двоичные представления — \(10\) и \(100\));
  • \(1337\) и \(4213\) похожи (двоичные представления — \(10100111001\) и \(1000001110101\));
  • \(3\) и \(2\) не похожи (двоичные представления — \(11\) и \(10\));
  • \(42\) и \(13\) похожи (двоичные представления — \(101010\) и \(1101\)).

Вам задан массив из \(n\) целых чисел \(a_1\), \(a_2\), ..., \(a_n\). Вы должны выбрать неотрицательное целое число \(x\), после чего вы получите новый массив из \(n\) чисел \(b_1\), \(b_2\), ..., \(b_n\), где \(b_i = a_i \oplus x\) (\(\oplus\) обозначает операцию побитового исключающего ИЛИ).

Можно ли получить такой массив \(b\), в котором все числа похожи друг на друга?

Входные данные

В первой строке задано одно целое число \(n\) (\(2 \le n \le 100\)).

Во второй строке заданы \(n\) целых чисел \(a_1\), \(a_2\), ..., \(a_n\) (\(0 \le a_i \le 2^{30} - 1\)).

Выходные данные

Если нельзя выбрать такой \(x\), что все элементы в полученном массиве будут похожи друг на друга, выведите \(-1\).

Иначе выведите любое неотрицательное целое число, не превосходящее \(2^{30} - 1\), которое можно использовать как \(x\) таким образом, что все числа в полученном массиве будут похожи друг на друга.


Примеры
Входные данныеВыходные данные
1 2
7 2
1
2 4
3 17 6 0
5
3 3
1 2 3
-1
4 3
43 12 12
1073709057

time 4000 ms
memory 1024 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя