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;
char s[100100];
int n,k;
inline int Firstpos()
{
	int res=1;
	for(int i=2;i<=n+1;i++) for(int j=1;j<=n;j++) if(s[res+j-1]^s[i+j-1])
		{if(s[res+j-1]>s[i+j-1]) res=i;break;}
	return res;
}
int main()
{
	scanf("%d%d%s",&n,&k,s+1);k--;
	for(int i=1;i<=n;i++) s[n+i]=s[n-i+1];
	int cnt=1,now=Firstpos();
	while(s[now+1]==s[now]&&cnt+1<=n) now++,cnt++;
	while(k--){cnt=min(n,cnt*2);if(cnt==n) break;}
	for(int i=1;i<=cnt;i++) putchar(s[now]);
	for(int i=1;i<=n-cnt;i++) putchar(s[now+i]);
	return 0;
}