Цукерочки для друзів
Обмеження: 4 сек., 1024 МіБ
Зеник з Марічкою вирішили запросити друзів у гості після виснажливої олімпіади до своїх апартаментів та пригостити їх цукерочками.
У них є n друзів-алгоритмістів. Деякі з них настільки затяті, що не полишають розв’язування задач ні вдень, ні вночі, і будуть сьогодні писати AtCoder Regular Contest. Вони не знають точної кількості друзів, які планують писати це змагання (і не прийдуть через це у гості). Проте вони знають, що таких друзів буде хоча б один, але не більше ніж k. Тобто прийняти запрошення Зеника з Марічкою можуть n−1, n−2, ..., або n−k друзів.
Зеник з Марічкою повинні справити на гостей щонайкраще враження. Вони хочуть купити цукерочки так, аби порівну поділити їх між друзями, скільки б їх не зібралось. Зауважте, що вони не можуть залишити деякі цукерочки собі або роздати їх не порівну, адже це суперечитиме правилам етикету. Тому вони куплять рівно НСК(n−1,n−2,…,n−k) цукерок.
Після того, як Зеник з Марічкою купили цукерочки, вони помітили, що вони цю кількість можуть розділити на всіх n друзів.
Вам відоме значення k, але кількість друзів n ви не знаєте. Порахуйте, скільки існує таких значень n, що задовольняють умову. Формально, потрібно порахувати кількість натуральних чисел n>k таких, що НСК(n−1,n−2,…,n−k) ділиться націло на n. Оскільки ця кількість може бути дуже великою, слід обчислити остачу від ділення її на просте число 998244353.
Зеник і Марічка хочуть, щоб усе пройшло ідеально, тому розглядають t різних значень k, для кожного з яких вони просять вас незалежно розв’язати задачу.
Вхідні дані
У першому рядку задано одне ціле число t — кількість запитів.
У наступному рядку задано t цілих чисел k, для кожного з яких треба розв’язати задачу.
Вихідні дані
У єдиному рядку виведіть t цілих чисел — відповіді на відповідні запити, тобто кількість цілих чисел n, для яких НСК(n−1,n−2,…,n−k) ділиться націло на n за модулем 998244353.
Обмеження
1≤t≤105,
1≤k≤107.
Оцінювання задачі складається із наступних блоків:
1 бал — приклад з умови,
4 бали — t=1,k≤20,
10 балів — t=1,k≤107,
10 балів — без додаткових обмежень.
Бали за блок ви отримаєте лише якщо дасте правильну відповідь на всі тести з блоку.
Приклади
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
2 4 101 | 2 322961306 |
Примітки
НСК(n−1,n−2,…,n−k) — це найменше спільне кратне, тобто найменше натуральне число, що ділиться націло на n−1,n−2,…,n−k.
Для k=4 умову задовольняють n=6 і n=12.
НСК(5, 4, 3, 2) = 60 ділиться на 6.
НСК(11, 10, 9, 8) = 3960 ділиться на 12.
Для k=101 відповідь 322961306 \equiv 1321205659\pmod{998244353}.