#P4974. [Lydsy1708月赛]字符串大师

[Lydsy1708月赛]字符串大师

题目描述

一个字符串 T T 被称为字符串 S S 的循环节,当且仅当存在一个正整数 k k ,使得 S S Tk T^k (即 T T 重复 k k 次)的前缀。例如,字符串 abcdabcdabcdab 的循环节。

给定一个长度为 n n 的仅由小写字母构成的字符串 S S ,对于每个 k k 1kn 1 \leq k \leq n ),需要求出 S S 长度为 k k 的前缀的最短循环节长度 peri \text{per}_i 。字符串大师小 Q 觉得这个问题非常简单,于是只花了一分钟就将其解决了。他想检验你是否也是一位字符串大师。

小 Q 告诉你 n n 以及 per1,per2,,pern \text{per}_1, \text{per}_2, \ldots, \text{per}_n ,请你找到一个长度为 n n 的小写字符串 S S ,使得它的每个前缀的最短循环节长度与给定的 per \text{per} 序列完全匹配。

如果有多个满足条件的字符串 S S ,你需要输出字典序最小的那个。

输入格式

第一行包含一个正整数 n n 1n100000 1 \leq n \leq 100000 ),表示字符串的长度。

第二行包含 n n 个正整数 per1,per2,,pern \text{per}_1, \text{per}_2, \ldots, \text{per}_n 1perii 1 \leq \text{per}_i \leq i ),表示每个前缀的最短循环节长度。

输入数据保证至少存在一组可行解。

输出格式

输出一行一个长度为 n n 的小写字符串 S S ,即某个满足条件的 S S

如果有多个满足条件的 S S ,输出字典序最小的那个。

5
1 2 2 2 5
ababb

样例解释

在样例中,给定的 per \text{per} 序列为 [1,2,2,2,5] [1, 2, 2, 2, 5] ,对应的字符串 S="ababb" S = \text{"ababb"} 满足以下条件:

  • 长度为 1 1 的前缀是 "a",其最短循环节长度为 1 1
  • 长度为 2 2 的前缀是 "ab",其最短循环节长度为 2 2
  • 长度为 3 3 的前缀是 "aba",其最短循环节长度为 2 2
  • 长度为 4 4 的前缀是 "abab",其最短循环节长度为 2 2
  • 长度为 5 5 的前缀是 "ababb",其最短循环节长度为 5 5