Ультра mex

아직 제출이 없습니다시간 제한5초메모리 제한1024 MB

문제

Рассмотрим AA --- множество неотрицательных целых чисел. Минимальное неотрицательное целое число, которое не встречается в AA, обозначим как mex(A)\mathrm{mex}(A). Например, mex(0,1,2,4,5,9)=3\mathrm{mex}(\\{0, 1, 2, 4, 5, 9\\}) = 3. Эта функция часто используется, например, в теории игр.

Операция <<побитовое исключающее или>> (обозначается <<xor>> в Паскале и Python, <<\char 94>> в C++ и Java) для двух целых чисел определена следующим образом: ii-й бит результата равен 11 тогда и только тогда, когда в одном из чисел этот бит 11, а в другом 00. Будем обозначать эту операцию символом \oplus. Например, 610=110_21010_2=1100_2=126 \oplus 10 = 110\_2 \oplus 1010\_2 = 1100\_2 = 12.

Определим ещё одну операцию над множеством AA, содержащим число 00. Операция будет называться <<ультра>>. Пусть m=mex(A)m = \mathrm{mex}(A). Заметим, что m>0m > 0. Построим новое множество ultra(A)\mathrm{ultra}(A) следующим образом: применим <<побитовое исключающее или>> с числом (m1)(m - 1) ко всем элементам AA. Например, ultra(0,1,2,4,5,9)=02,12,22,42,52,92=2,3,0,6,7,11=0,2,3,6,7,11\mathrm{ultra}(\\{0, 1, 2, 4, 5, 9\\}) = \\{0 \oplus 2, 1 \oplus 2, 2\oplus 2, 4\oplus 2, 5\oplus 2, 9\oplus 2\\}=\\{2, 3, 0, 6, 7, 11\\} = \\{0, 2, 3, 6, 7, 11\\}. Можно показать, что если множество AA содержит 00, то множество ultra(A)\mathrm{ultra}(A) также содержит 00.

Выберем множество A_0A\_0, состоящее из целых чисел от 00 до 2k12^k-1 и содержащее 00. Рассмотрим следующую последовательность:

  • m_0=mex(A_0)m\_0 = \mathrm{mex}(A\_0), A_1=ultra(A_0)A\_1 = \mathrm{ultra}(A\_0)
  • m_1=mex(A_1)m\_1 = \mathrm{mex}(A\_1), A_2=ultra(A_1)A\_2 = \mathrm{ultra}(A\_1)
  • \dots
  • m_i=mex(A_i)m\_i = \mathrm{mex}(A\_i), A_i+1=ultra(A_i)A\_{i + 1} = \mathrm{ultra}(A\_i)
  • \dots

Будем называть множество A_0A\_0 mex\mathrm{mex}-стабильным, если начиная с некоторого индекса ll числа m_im\_i перестают меняться. То есть, для всех ili \ge l выполнено m_i=m_lm\_i = m\_l. Число m_lm\_l будем называть mex\mathrm{mex}-пределом множества A_0A\_0.

Вам даны числа kk, nn и pp. Вычислите количество множеств A_0A\_0, которые:

  • Состоят из nn различных чисел от 00 до 2k12^k - 1 (00 обязательно должен входить в A_0A\_0);
  • Являются mex\mathrm{mex}-стабильными;
  • mex\mathrm{mex}-предел A_0A\_0 равен pp.

Так как ответ может быть большим, выведите его по простому модулю MM. Гарантируется, что (M1)(M-1) делится на 2182^{18}.

입력

В первой строке дано одно целое число MM --- модуль, по которому нужно посчитать ответ (3M1093 \leq M \leq 10^9; (M1)(M-1) делится на 2182^{18}). Гарантируется, что MM простое число.

Во второй строке дано одно целое число tt --- количество наборов входных данных (1t100,0001 \le t \le 100\\,000).

Для каждого набора входных данных в единственной строке даны три целых числа kk, nn и pp (1k171 \le k \le 17; 1n,p2k1 \le n, p \le 2^k).

출력

Для каждого набора входных данных на новой строке выведите одно целое число --- количество искомых множеств AA, взятое по модулю MM.

힌트

Всего существует 77 mex\mathrm{mex}-стабильных множеств размера 22 из чисел от 00 до 77: 0,1\\{0, 1\\}, 0,2\\{0, 2\\}, 0,3\\{0, 3\\}, 0,4\\{0, 4\\}, 0,5\\{0, 5\\}, 0,6\\{0, 6\\}, 0,7\\{0, 7\\}.

Для 0,1\\{0, 1\\}: mex(0,1)\mathrm{mex}(\\{0, 1\\}) = 2, ultra(0,1)=01,11=1,0=0,1\mathrm{ultra}(\\{0, 1\\})=\\{0 \oplus 1, 1 \oplus 1\\} = \\{1, 0\\} = \\{0, 1\\}, получается, что A_1=A_0A\_1 = A\_0. Значит mex\mathrm{mex}-предел будет равен 22.

Для всех остальных множеств m_0=mex(A_0)=1m\_0 = \mathrm{mex}(A\_0)=1, для них при вычислении ultra происходит \oplus с числом 0, поэтому ultra(A_0)=A_0\mathrm{ultra}(A\_0) = A\_0. Получается, для них mex\mathrm{mex}-предел равен mex(A_0)=1\mathrm{mex}(A\_0) = 1.