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$。