Takahashi has a string S of length N consisting of lowercase English letters. On this string, he will perform the following operation K times:

* Let T be the string obtained by reversing S, and U be the string obtained by concatenating S and T in this order.
* Let S' be some contiguous substring of U with length N, and replace S with S'.



Among the strings that can be the string S after the K operations, find the lexicographically smallest possible one.

Constraints

* 1 \leq N \leq 5000
* 1 \leq K \leq 10^9
* |S|=N
* S consists of lowercase English letters.

Input

Input is given from Standard Input in the following format:


N K
S


Output

Print the lexicographically smallest possible string that can be the string S after the K operations.

Examples

Input

5 1
bacba


Output

aabca


Input

10 2
bbaabbbaab


Output

aaaabbaabb
#include<bits/stdc++.h>
using namespace std;

int n,k,z[10005];
string s[1555],t;
bool check(int x,int y){
    for (int i=0;i<n/2;i++) if (t[x+i]!=t[y+i]) return t[x+i]<t[y+i];
    return 0;
}
string solve(string x){
    string y=x; reverse(y.begin(),y.end());
    t=y+x; //get_z();
    int pos=0;
    for (int i=1;i<=n;i++) if (check(i,pos)) pos=i;
    string ret="";
    for (int i=pos;i<pos+n;i++) ret+=t[i];
    return ret;
}
int main(){
    cin >> n >> k >> s[0];
    reverse(s[0].begin(),s[0].end());
    for (int i=1;i<=k;i++){
        s[i]=solve(s[i-1]);
        if (s[i]==s[i-1]) {
            cout << s[i] << endl;
            return 0;
        }
    }
    cout << s[k] << endl;
}
