Олимпиадный тренинг

Задача . E. Вика и блинчики


В родном городе Вики, Владивостоке, очень красивое море.

Часто можно видеть ребят, запускающих «блинчики» или «лягушки». Так называется процесс кидания камня в море под небольшим углом, отчего он далеко летит и несколько раз отскакивает от водной глади.

Вика много раз запускала «блинчики» и знает, что если кинуть камень от берега перпендикулярно береговой линии с силой \(f\), то он сперва коснётся воды на расстоянии \(f\) от берега, затем оттолкнётся и вновь коснётся воды на расстоянии \(f - 1\) от предыдущей точки касания. Так камешек будет лететь по прямой, всё сокращая расстояния между точками, в которых он касается воды, пока не упадёт в море.

Формально, точки в которых камень соприкоснётся с водной гладью будут иметь следующие координаты: \(f\), \(f + (f - 1)\), \(f + (f - 1) + (f - 2)\), ... , \(f + (f - 1) + (f - 2) + \ldots + 1\) (если считать, что \(0\) — координата береговой линии).

Как-то раз прогуливаясь вечером по набережной Владивостока, Вика увидела, как группа ребят запускала «блинчики» в море с одной и той же точки с разными силами.

Ей стало интересно, какое максимальное количество ребят могут запустить камешек со своей силой \(f_i\), так чтобы все \(f_i\) были различными целыми положительными числами, и при этом все \(n\) камешков в процессе полёта коснулись воды в точке с координатой \(x\) (если считать, что \(0\) — координата береговой линии).

Немного подумав, Вика ответила на свой вопрос. После этого она начала анализировать, а как будет изменятся ответ на её вопрос, если координату \(x\) домножать на некоторые положительные целые числа \(x_1\), \(x_2\), ... , \(x_q\), выбранные ей для анализа.

Вике сложно справится с таким анализом самостоятельно, поэтому она обратилась к вам за помощью.

Формально, Вику интересует ответ на её вопрос для координат \(X_1 = x \cdot x_1\), \(X_2 = X_1 \cdot x_2\), ... , \(X_q = X_{q-1} \cdot x_q\). Так как ответ для таких координат может быть очень большой, найдите его по модулю \(M\). Гарантируется, что число \(M\) является простым.

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

В первой строке входных данных содержится три целых числа \(x\) (\(1 \le x \le 10^9\)), \(q\) (\(1 \le q \le 10^5\)) и \(M\) (\(100 \le M \le 2 \cdot 10^9\)) — изначальная координата, для которой Вика ответила на вопрос самостоятельно, количество чисел \(x_i\), на которые Вика будет домножать изначальную координату и простой модуль \(M\).

Во второй строке входных данных содержится \(q\) чисел \(x_1, x_2, x_3, \ldots, x_q\) (\(1 \le x_i \le 10^6\)) — описанные в условии числа.

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

Выведите \(q\) целых чисел, где \(i\)-е число соответствует ответу на вопрос Вики для координаты \(X_i\). Все ответы выводите по модулю \(M\).

Примечание

В первом примере, чтобы камешек коснулся водной глади в точке с координатой \(2\), его нужно кинуть с силой \(2\). Чтобы камешек коснулся воды в точке с координатой \(2 \cdot 3 = 6\), его нужно кинуть с силой \(3\) или с силой \(6\).

Во втором примере можно запустить «блинчик» с силой \(5\) или \(14\), чтобы он коснулся в воды в точке с координатой \(7 \cdot 2 = 14\). Для координаты \(14 \cdot 13 = 182\) есть \(4\) варианта сил — это \(20\), \(29\), \(47\), \(182\).


Примеры
Входные данныеВыходные данные
1 1 2 179
2 3
1
2
2 7 5 998244353
2 13 1 44 179
2
4
4
8
16
3 1000000000 10 179
58989 49494 8799 9794 97414 141241 552545 145555 548959 774175
120
4
16
64
111
43
150
85
161
95

time 3000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя