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

Задача . B. Джонни и его хобби


Среди многочисленных хобби Джонни, есть два, казалось бы, безвредных: применение побитовых операций и прокрадывание в офис его отца. Как это обычно и бывает у маленьких детей, Джонни не подозревает, что комбинирование этих двух занятий может доставить ему много неприятностей.

На столе его отца хранится множество \(S\), содержащее очень важные числа. В момент, когда Джонни узнал об этом, он решил, что это хорошая идея выбрать положительное целое число \(k\) и заменить все элементы \(s\) из множества \(S\) на \(s \oplus k\) (\(\oplus\) обозначает операцию исключающего или).

Помогите Джонни выбрать такое \(k\), что его отец не заметит никакой разницы после того, как Джонни закончит играть (т.е. Джонни должен получить такое же множество, какое было изначально). Возможно, что ни одного такого числа не существует. Также, возможно, что существует несколько подходящих чисел. В таком случае, выведите минимальное из них. Обратите внимание, что порядок элементов в множестве не имеет значения, т.е. множество \(\{1, 2, 3\}\) равно множеству \(\{2, 1, 3\}\).

Формально, требуется найти минимальное положительное целое число \(k\), такое что \(\{s \oplus k | s \in S\} = S\) или сообщить, что ни одного подходящего числа не существует.

Например, если \(S = \{1, 3, 4\}\) и \(k = 2\), новое множество будет равно \(\{3, 1, 6\}\). Если \(S = \{0, 1, 2, 3\}\) и \(k = 1\), после игры множество останется таким же.

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

В первой строке дано одно целое число \(t\) (\(1 \leq t \leq 1024\)) — количество наборов входных данных. В следующих строках даны \(t\) наборов входных данных, каждый из них занимает две строки.

В первой строке набора входных данных дано одно целое число \(n\) (\(1 \leq n \leq 1024\)), обозначающее количество элементов в множестве \(S\). Вторая строка содержит \(n\) различных целых чисел \(s_i\) (\(0 \leq s_i < 1024\)) — элементы \(S\).

Гарантируется, что сумма \(n\) по всем наборам входных данных не превышает \(1024\).

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

Выведите \(t\) строк, \(i\)-я из них должна содержать ответ на \(i\)-й набор входных данных — минимальное положительное целое число \(k\), удовлетворяющее условиям, или \(-1\), если ни одного подходящего \(k\) не существует.

Примечание

В первом наборе входных данных, ответ \(1\), потому что это минимальное положительное целое число и оно удовлетворяет всем условиям.


Примеры
Входные данныеВыходные данные
1 6
4
1 0 2 3
6
10 7 14 8 3 12
2
0 2
3
1 2 3
6
1 4 6 10 11 12
2
0 1023
1
4
2
-1
-1
1023

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

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