Козак Вус дуже любить стрибати та ласувати цукерками. Одного разу його занесло на числову пряму, де в деяких цілих точках лежать цукерки (у кожній точці не більше однієї цукерки). Вус неймовірно зрадів і вирішив зібрати якомога більше цукерок. Для цього він може вибрати будь-яке ціле число 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
Приклад 2
У першому прикладі Козак може вибрати x = 2 та підняти цукерки на позиціях , та .У другому прикладі Козак може вибрати x = 3 та підняти цукерки на позиціях , , , та .
(4 бали) n \leq 2, a_i \leq 10;
(5 балів) n \leq 3, a_i \leq 10^2;
(12 балів) n \leq 10, a_i \leq 10^2;
(20 балів) n \leq 10^3, a_i \leq 10^4;
(25 балів) n \leq 10^4, a_i \leq 10^6;
(34 бали) без додаткових обмежень.