#P11107. [ROI 2023] Ultra mex (Day 1)

    ID: 10728 远端评测题 4000ms 512MiB 尝试: 0 已通过: 0 显示难度NOI/NOI+/CTS 上传者: 标签>2023Special JudgeROI(俄罗斯)

[ROI 2023] Ultra mex (Day 1)

背景

翻译自 ROI 2023 D1T4。

假设 AA 是一个非负整数的集合。将 AA 中不存在的最小非负整数记为 mex⁡(A)\operatorname{mex}(A)。例如,mex⁡({0,1,2,4,5,9})=3\operatorname{mex}(\{0, 1, 2, 4, 5, 9\}) = 3。

我们还定义了一种在含有 00 的集合 AA 上的操作,称为 Ultra⁡\operatorname{Ultra}。假设 m=mex⁡(A)m = \operatorname{mex}(A),因为 0∈A0\in A,显然 m>0m > 0。按照以下方法构建新的集合 Ultra⁡(A)\operatorname{Ultra}(A):对 AA 中的每个元素异或 m−1m-1。例如,$\operatorname{Ultra}(\{0, 1, 2, 4, 5, 9\}) = \{0\oplus2, 1\oplus2, 2\oplus2, 4\oplus2, 5\oplus2, 9\oplus2\} = \{2, 3, 0, 6, 7, 11\} = \{0, 2, 3, 6, 7, 11\}$。

不难发现,如果集合 AA 包含 00,则集合 Ultra⁡(A)\operatorname{Ultra}(A) 也包含 00。

我们选择由 00 到 2k−12^{k}-1 之间的整数组成的集合 A0A_0,且 00 在 A0A_0 中。考虑以下序列:

  • $m_0 = \operatorname{mex}(A_0),A_1 = \operatorname{Ultra}(A_0)$。
  • $m_1 = \operatorname{mex}(A_1),A_2 = \operatorname{Ultra}(A_1)$。
  • …\dots
  • $m_i = \operatorname{mex}(A_i),A_{i+1} = \operatorname{Ultra}(A_i)$。

如果从某个数 ll 开始,数字 mim_i 不再变化,也就是说,对于所有 i≥li \ge l,mi=mlm_i = m_l,则称集合 A0A_0 是 mex-stable 的,将 mlm_l 称为集合 A0A_0 的 mex-limit。

题目描述

给定整数 k,n,pk,n,p,计算满足以下条件的集合 A0A_0 的数量:

  • 它包含从 00 到 2k−12^{k}-1 的 nn 个不同整数(其中 00 必须包含在 A0A_0 中);
  • 它是 mex-stable 的;
  • 它的 mex-limit 等于 pp。

由于答案可能很大,输出答案对 MM 取模后的结果。保证 M−1M - 1 能被 2182^{18}(262144262144)整除。

输入格式

第一行包含一个整数 MM,表示要对其取模的模数(3≤M≤1093 \le M \le 10^9 且 M−1M - 1 可被 2182^{18} 整除)(所以 MM 实际上不可能小于 218+12^{18}+1)。保证 MM 是一个质数。

第二行包含一个整数 tt,表示输入数据的组数(1≤t≤1000001 \le t \le 100000)。

对于每组输入数据,包含三个整数 k,n,pk,n,p(1≤k≤171 \le k \le 17,1≤n,p≤2k 1 \le n, p \le 2^k)。

输出格式

对于每组输入数据,输出一行,包含一个整数,表示满足条件的集合 AA 的数量对 MM 取模后的结果。

998244353
6
3 2 1
3 2 2
3 2 3
3 2 4
3 5 1
4 6 1
6
1
0
0
29
2461

提示

除样例外,本题有三十个子任务,如下图所示。