#P15667. [ICPC 2025 Jakarta R] Predisposed

[ICPC 2025 Jakarta R] Predisposed

说明

给定两个整数 NNMM,以及 QQ 个形式为 (Xj,Yj)(X_j, Y_j) 的约束。

一个长度为 NN 的序列 A=(A1,,AN)A = (A_1, \dots, A_N) 被称为预置序列,当且仅当:

  • 对于每个 1iN1 \le i \le N,有 0Ai<M0 \le A_i < M
  • 对于每个 1jQ1 \le j \le Q,所有满足 kkXjX_j 的倍数的 AkA_k 之和在模 MM 下等于 YjY_j。形式化地,XjkAkYj(modM)\sum_{X_j \vert k} A_k \equiv Y_j \pmod{M}

求所有可能的预置序列的数量。由于答案可能很大,请输出其对 998  244  353998\;244\;353 取模的结果。

输入格式

第一行包含三个整数 NNMMQQ1N,M<998  244  3531 \leq N, M < 998\;244\;3531Qmin(N,100  000)1 \leq Q \leq \min(N, 100\;000))。

接下来的 QQ 行,每行包含两个整数 XjX_jYjY_j1XjN1 \leq X_j \leq N0Yj<M0 \leq Y_j < M;对于 pqp \neq q,有 XpXqX_p \neq X_q),表示一个约束。

输出格式

输出一行一个整数,表示预置序列的数量对 998  244  353998\;244\;353 取模的结果。

2 3 2
1 0
2 1
1
100000 100000 1
100000 0
373304036

提示

样例 1 解释: 唯一的预置序列是 A=(2,1)A = (2, 1)

翻译由 DeepSeek V3.2 完成