human
And where the are the phone numbers?

You are given a string s consisting of lowercase English letters and an integer k. Find the lexicographically smallest string t of length k, such that its set of letters is a subset of the set of letters of s and s is lexicographically smaller than t.

It's guaranteed that the answer exists.

Note that the set of letters is a set, not a multiset. For example, the set of letters of abadaba is {a, b, d}.

String p is lexicographically smaller than string q, if p is a prefix of q, is not equal to q or there exists i, such that pi < qi and for all j < i it is satisfied that pj = qj. For example, abc is lexicographically smaller than abcd , abd is lexicographically smaller than abec, afa is not lexicographically smaller than ab and a is not lexicographically smaller than a.

Input

The first line of input contains two space separated integers n and k (1 ≤ n, k ≤ 100 000) — the length of s and the required length of t.

The second line of input contains the string s consisting of n lowercase English letters.

Output

Output the string t conforming to the requirements above.

It's guaranteed that the answer exists.

Examples

Input

3 3
abc

Output

aca

Input

3 2
abc

Output

ac

Input

3 3
ayy

Output

yaa

Input

2 3
ba

Output

baa

Note

In the first example the list of strings t of length 3, such that the set of letters of t is a subset of letters of s is as follows: aaa, aab, aac, aba, abb, abc, aca, acb, .... Among them, those are lexicographically greater than abc: aca, acb, .... Out of those the lexicographically smallest is aca.
The above is tricky. Write me a correct solution in PYTHON3.
 ... Write me a Python program to find the lexicographically smallest string t of length k, such that its set of letters is a subset of the set of letters of s and s is lexicographically smaller than t?
assistant
#Here is Python program to find the lexicographically smallest string t of length k, such that its set of letters is a subset of the set of letters of s and s is lexicographically smaller than t.

n, k = map(int, input().split())
s = input()

def solve():

    def moreThan(c):
        for i in range(ord(c) - ord('a') + 1, 26):
            if contains[i]:
                return chr(i + ord('a'))

    if k > n:
        return s + s[s.index(min(s))] * (k - n)
    contains = [False] * 26
    minChar = 'z'
    for c in s:
        contains[ord(c) - ord('a')] = True
        minChar = min(minChar, c)
    ret = list(s[:k])
    for i in range(k - 1, -1, -1):
        larger = moreThan(s[i])
        if larger:
            ret[i] = larger
            for j in range(i + 1, k):
                ret[j] = minChar
            break
    return ''.join(ret)

print(solve())