Задача групування#1525

Задача групування

1 секунда
128 мегабайтів
Складна

Дано множину з цілих чисел. Ви можете обрати з цієї множини різних елементів, щоб сформувати групу. Дві групи вважаються різними, якщо існує хоча б один елемент, який присутній в одній групі, але відсутній в іншій. Наприклад, якщо множина складається з елементів a, b, c, d, і потрібно обрати два елементи, то ab, ac, ad, bc, bd і є всіма коректними та різними групами.

Система групування називається повною, якщо для заданого число різних груп максимально. В цьому прикладі множина \{ab, ac, ad, bc, bd, cd\} утворює повну систему групування.

Для деякої повної системи групування її оцінка (fitness) обчислюється наступним чином:

У наведеному вище прикладі, для k = 2, оцінка дорівнює

F_2 = (ab + ac + ad + bc + bd + cd) \bmod\ m

Якщо k = 1, то оцінка дорівнює

F_1 = (a + b + c + d) \bmod\ m

Ваше завдання — визначити повну систему групування, яка дає максимально можливу оцінку.

Вхідні дані

Кожен тест починається з двох додатних цілих чисел n~(2 \le n \le 1000) і m~(1 \le m < 2^{31}). Наступний рядок містить натуральних чисел, кожне з яких не більше . Останній тест містить n = m = 0 і не обробляється.

Вихідні дані

Для кожного тесту виведіть в окремому рядку максимально можливу оцінку для системи групування.

Приклади

Приклад 1

Loading
Loading