字符串操作
题号:NC296395
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}Bingbong 给定了一个长度为 n,仅由小写字母构成的字符串 s。你需要选择一个非空子串^\texttt{[1]},并对该子串内所有字符同时进行若干次(可以为 0 次)向右循环移位^\texttt{[2]}操作。
\hspace{15pt}Bingbong 希望使得修改过后的 s字典序^\texttt{[3]}上最大化,请你帮助他求出操作后能得到的字典序最大的字符串。

【名词解释】
\hspace{15pt}^\texttt{[1]}子串:从原字符串中,连续的选择一段字符(可以全选)得到的新字符串。
\hspace{15pt}^\texttt{[2]}向右循环移位:将字符串中的每个字符变为其字母表中的后继字母。即,\texttt{a}\to\texttt{b},\texttt{b}\to\texttt{c},\cdots,\texttt{z}\to\texttt{a}
\hspace{15pt}^\texttt{[3]}相同长度字符串的字典序比较:从字符串的第一个字符开始逐个比较,直至发现第一个不同的位置,比较这个位置字符的字母表顺序,字母序更大的字符串字典序也更大。

输入描述:

\hspace{15pt}第一行输入一个整数 n\left(1\leqq n\leqq 2\times 10^{5}\right),表示字符串长度。
\hspace{15pt}第二行输入一个长度为 n、仅由小写字母构成的字符串 s,表示初始字符串。

输出描述:

\hspace{15pt}输出一个字符串,表示操作后能得到的字典序最大的字符串。
示例1

输入

复制
4
zyac

输出

复制
zzbd

说明

\hspace{15pt}在这个样例中,第一个字符 \texttt{`z'} 已经是字母序最大的字符,所以一定不会被选中操作。最优的选择方案是同时选择子串 [2,4](即 \texttt{yac}),进行一次向右循环移位操作,得到字符串 \texttt{zzbd}
示例2

输入

复制
4
zyzz

输出

复制
zzzz
示例3

输入

复制
2
xa

输出

复制
zc