Сем і Юра виступають на конференції. Всього у них є доповідей, занудність -ої з яких рівна 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