atcoder#ARC118D. [ARC118D] Hamiltonian Cycle

[ARC118D] Hamiltonian Cycle

配点 : 700700

問題文

素数 PP および正の整数 a,ba, b が与えられます。 PP 項からなる整数列 A=(A1,A2,,AP)A = (A_1, A_2, \ldots, A_P) であって、次の条件をすべて満たすものが存在するかを判定してください。 存在する場合には、そのようなものをひとつ出力してください。

  • 1AiP11\leq A_i\leq P - 1
  • A1=AP=1A_1 = A_P = 1
  • (A1,A2,,AP1)(A_1, A_2, \ldots, A_{P-1}) は、(1,2,,P1)(1, 2, \ldots, P-1) を並べ替えたものである
  • 任意の 2iP2\leq i\leq P に対して、次のうち少なくともひとつが成り立つ:- AiaAi1(modP)A_{i} \equiv aA_{i-1}\pmod{P}
    • Ai1aAi(modP)A_{i-1} \equiv aA_{i}\pmod{P}
    • AibAi1(modP)A_{i} \equiv bA_{i-1}\pmod{P}
    • Ai1bAi(modP)A_{i-1} \equiv bA_{i}\pmod{P}
  • AiaAi1(modP)A_{i} \equiv aA_{i-1}\pmod{P}
  • Ai1aAi(modP)A_{i-1} \equiv aA_{i}\pmod{P}
  • AibAi1(modP)A_{i} \equiv bA_{i-1}\pmod{P}
  • Ai1bAi(modP)A_{i-1} \equiv bA_{i}\pmod{P}

制約

  • 2P1052\leq P\leq 10^5
  • PP は素数
  • 1a,bP11\leq a, b \leq P - 1

入力

入力は以下の形式で標準入力から与えられます。

PP aa bb

出力

問題の条件を満たす整数列 AA が存在するならば Yes を、そうでなければ No を出力してください。 Yes の場合には、22 行目にそのような整数列 AA の各要素を、空白で区切って 1 行で出力してください。

A1A_1 A2A_2 \ldots APA_P

条件を満たす整数列が複数存在する場合は、どれを出力しても正解となります。

13 4 5
Yes
1 5 11 3 12 9 7 4 6 8 2 10 1

P=13P = 13 を法として、

  • A25A1A_2\equiv 5A_1
  • A24A3A_2\equiv 4A_3
  • \vdots
  • A134A12A_{13}\equiv 4A_{12}

が成り立ち、この整数列は条件を満たすことが確認できます。

13 1 2
Yes
1 2 4 8 3 6 12 11 9 5 10 7 1
13 9 3
No
13 1 1
No