F. Козак Вус та цукерки#8756

F. Козак Вус та цукерки

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

Козак Вус дуже любить стрибати та ласувати цукерками. Одного разу його занесло на числову пряму, де в деяких цілих точках лежать цукерки (у кожній точці не більше однієї цукерки). Вус неймовірно зрадів і вирішив зібрати якомога більше цукерок. Для цього він може вибрати будь-яке ціле число x > 1 і початкову позицію ( — ціле число), після чого він буде відвідувати всі точки вигляду s + kx, де — невід'ємне ціле число. Якщо Вус потрапляє у точку з цукеркою, він підбирає її (хоча так робити не можна!). Ваше завдання — допомогти Вусу зібрати якомога більше цукерок.

Вхідні дані

Перший рядок містить два цілих числа і (1 \leq n \leq 10^5;~0 \leq g \leq 6) — кількість цукерок та номер блоку відповідно.

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

Взаємодія

Вам потрібно реалізувати функцію:

integer solve(integer n, integer g, array of integers m)

  • — кількість цукерок;

  • — номер блоку;

  • — масив позицій цукерок;

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

Вихідні дані

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

Приклади

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading

Примітка

У першому прикладі Козак може вибрати x = 2 та підняти цукерки на позиціях , та .У другому прикладі Козак може вибрати x = 3 та підняти цукерки на позиціях , , , та .

Оцінювання

  1. (4 бали) n \leq 2, a_i \leq 10;

  2. (5 балів) n \leq 3, a_i \leq 10^2;

  3. (12 балів) n \leq 10, a_i \leq 10^2;

  4. (20 балів) n \leq 10^3, a_i \leq 10^4;

  5. (25 балів) n \leq 10^4, a_i \leq 10^6;

  6. (34 бали) без додаткових обмежень.