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;
const int N=5001,K=20;
int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int n,k,i,j;
	string s,ans,ss,rs,cs;
	cin>>n>>k>>s;
	if(k>K)
	{
		j=0;
		for(i=1;i<n;i++)
			if(s[i]<s[j])j=i;
		for(i=0;i<n;i++)
			cout<<s[j];
		cout<<'\n';
		return 0;
	}
	ans=s;
	for(i=0;i<k;i++)
	{
		rs=s;
		reverse(rs.begin(),rs.end());
		ss=s+rs;
		cs=ss.substr(0,n);
		ans=cs;
		s=cs;
		reverse(s.begin(),s.end());
		for(j=1;j+n<=ss.size();j++)
		{
			cs=ss.substr(j,n);
			if(cs<ans)ans=cs;
			reverse(cs.begin(),cs.end());
			if(cs<s)s=cs;
		}
		reverse(s.begin(),s.end());
	}
	cout<<ans<<'\n';
}
