Конференція#8771

Конференція

1 секунда
64 мегабайти
Легка

Сем і Юра виступають на конференції. Всього у них є доповідей, занудність -ої з яких рівна a_i. Конференція триває днів. Кожну доповідь має бути прочитано рівно один раз (або Семом, або Юрою) в один із днів. Кожного дня має бути щонайменше одна доповідь.

Занудність дня рівна занудностей всіх доповідей, прочитаних в цей день. Організатори конференції хочуть так розподілити доповіді, щоб мінімізувати суму занудностей днів.

Допоможіть їм у цьому.

Операція (позначається як ) — це операція додавання за модулем . Щоб знайти двох чисел та , потрібно розкласти обидва числа у двійкову систему та додати по модулю окремо кожен біт. Наприклад, 4 \oplus 6 = 2, бо 4_{10} = 100_2, 6_{10} = 110_2, тому 4_{10} \oplus 6_{10} = 010_2 = 2_{10}.

Ця операція реалізована як оператор ^ в C++, C#, Java та xor у Pascal. набору чисел c_1, c_2, \ldots, c_k рівний (((c_1 \oplus c_2) \oplus c_3) \oplus \ldots \oplus c_k).

Вхідні дані

Перший рядок містить два цілі числа та (1 \leq k \leq n \leq 10^5) — кількість доповідей та кількість днів.

Другий рядок містить цілих чисел a_1, a_2, \ldots, a_n (1 \leq a_i \leq 10^9) — занудність -ої доповіді.

Вихідні дані

Виведіть єдине ціле число — мінімальну сумарну занудність.

Приклади

Приклад 1

Loading
Loading