Statement is not available in English language
5. Хорошие раскраски — 2024
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Саша очень любит комбинаторные задачи, а также он является главным фанатом задачи «Хорошие раскраски», которая появилась на региональном этапе ВсОШ по информатике несколько лет назад. Более того, Саша очень любит играть со спичками. Поэтому мальчик решил придумать свою задачу о хороших раскрасках и порадовать вас своим творением.

Саша выложил в ряд на столе $$$n$$$ квадратов, состоящих из спичек. На рисунке ниже приведен пример получившейся фигуры для $$$n = 3$$$. Можно заметить, что фигура, состоящая из $$$n$$$ квадратов, содержит в себе $$$3n + 1$$$ спичек.

Назовем две спички соседними, если они касаются в углу некоторого квадрата. Например, на рисунке ниже спички, окрашенные синим цветом, являются попарно соседними.

У Саши в распоряжении есть краски $$$k$$$ различных цветов, и, разумеется, он хочет окрасить каждую спичку выложенной фигуры в некоторый цвет. Саша считает раскраску спичек хорошей, если никакие две соседние спички не окрашены в один цвет.

Будучи любителем комбинаторных задач, Саша задумался, сколько существует различных хороших раскрасок спичек. Помогите Саше решить данную тривиальную задачу. Так как ответ может быть достаточно большим, вам необходимо вычислить остаток от деления количества хороших раскрасок на число $$$998\,244\,353$$$.

Входные данные

Первая строка содержит одно целое число $$$n$$$ ($$$1 \le n \le 10^{18}$$$) — количество квадратов из спичек, которые выложил на столе Саша.

Вторая строка содержит одно целое число $$$k$$$ ($$$3 \le k \lt 998\,244\,353$$$) — количество различных цветов, которые может использовать Саша.

Обратите внимание, что входные данные в этой задаче могут превышать возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и C#).

Выходные данные

Выведите одно целое число — остаток от деления количества различных хороших раскрасок на число $$$998\,244\,353$$$.

Примеры
Входные данные
1
5
Выходные данные
260
Входные данные
3
5
Выходные данные
223380
Входные данные
1000000000000000000
900000000
Выходные данные
591253139
Примечание

Баллы за подзадачи 1, 2, 4 – 8 начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.

Баллы за каждый тест в подзадаче 3 начисляются независимо, если все тесты необходимых подзадач успешно пройдены.

ПодзадачаБаллы Дополнительные ограничения Необходимые подзадачи Информация о проверке
00Тесты из условияполная
15$$$n \le 4$$$, $$$k = 3$$$первая ошибка
210$$$n \le 20$$$, $$$k = 3$$$1первая ошибка
310$$$n \le 30$$$, $$$k = 3$$$1, 2полная
45$$$n = 1$$$первая ошибка
515$$$n \le 100$$$, $$$k \le 10$$$1, 2, 3первая ошибка
620$$$n \le 10^6$$$1 – 5первая ошибка
715$$$n \le 10^9$$$1 – 6первая ошибка
820нет1 – 7первая ошибка