G. Encoded Strings II
time limit per test
2 с
memory limit per test
512 megabytes
input
standard input
output
standard output

Tommy has just invented an interesting string encoding algorithm, which is described below.

  • For every string $$$S$$$, we may define a character-mapping function $$$F_S$$$, which maps every character occurring in $$$S$$$ to a lowercase letter, as below $$$$$$ F_S(c) = \operatorname{chr}(G(c, S)) $$$$$$ where $$$\operatorname{chr}(i)$$$ is the $$$(i+1)$$$-th lowercase Latin letter, and $$$G(c, S)$$$ is the number of different characters after the last occurrence of $$$c$$$ in $$$S$$$.
  • To encode a string $$$S$$$ by Tommy's algorithm, replace every character $$$c$$$ in $$$S$$$ by $$$F_S(c)$$$ simultaneously.

For example, the encoded string of abc is cba, and the encoded string of cac is aba.

You are given a string of length $$$n$$$ and then encode all the $$$2^n-1$$$ nonempty subsequences. Your task is to find the encoded string that has the greatest lexicographical order among all the encoded strings.

Input

The first line contains an integer $$$n$$$ $$$(1 \le n \le 1\,000)$$$.

The second line contains a string of length $$$n$$$, which consists of only the first $$$20$$$ lowercase letters, a to t.

Output

Output the encoded string that has the greatest lexicographical order among all the encoded strings.

Examples
Input
4
aacc
Output
bbaa
Input
4
acac
Output
bba