P17361 [ECNA 2024] Marching Orders

题目描述

院长 Bob Roberts 负责确定学院教授在毕业典礼上的行进次序。新成立的 DEI Studies Department 中有些教授提出意见,于是学院决定不再按资历排列,而应随机决定次序。Bob 认为这样很好,并为了完全公开透明,公布了生成行进名单的方法: 他从一份按字母顺序排列的 $n$ 名教授名单开始,位置编号为 $0,1,\ldots,n-1$,并选取一个小于 $10^9$ 的非负整数 $m$。行进名单中的第一人,是字母顺序名单中位置为 $m\bmod n$ 的教授。移除此人后,名单长度减一,原先位置大于 $m\bmod n$ 的人都向前移动。行进名单中的第二人,是新名单中位置为 $m\bmod(n-1)$ 的教授,依此类推。 例如,有六名教授 A、B、C、D、E、F,且 $m=11679$ 时,生成过程如下: | 当前人数 | $m$ 对当前人数取模 | 字母顺序名单 | 行进名单 | | --: | --: | :-- | :-- | | $6$ | $3$ | A B C D E F | D | | $5$ | $4$ | A B C E F | D F | | $4$ | $3$ | A B C E | D F E | | $3$ | $0$ | A B C | D F E A | | $2$ | $1$ | B C | D F E A C | | $1$ | $0$ | B | D F E A C B | 这听起来很公平,但某些教授认为还不够透明,因为 Roberts 院长并不公开实际使用的 $m$。这样一来,就很难判断他是否真的遵循了公布的方法,还是仅凭个人喜好和偏见选择行进次序。 教职员工想知道:对于给定的行进次序,是否存在某个 $m$ 能够生成它?

输入格式

第一行包含一个十进制整数 $n$($5\le n\le 20$),表示参加行进的教授人数。 第二行包含一个字符串,是英文字母表前 $n$ 个大写字母的一个排列,表示拟定的行进次序。

输出格式

如果给定次序不可能由上述算法生成,输出一行 `NO`。 否则输出两行:第一行输出 `YES`,第二行输出能够生成该次序的最小非负整数 $m$。