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<cstdio>
#include<iostream>
#define RI register int
#define CI const int&
using namespace std;
const int N=10005;
char s[N],mi='z',ans[N],tp[N]; int n,k;
inline bool cmp_min(char *a,char *b)
{
	for (RI i=1;i<=n;++i)
	if (a[i]!=b[i]) return a[i]<b[i]; return 0;
}
inline void solve(char *s,int k)
{
	int nw=n,len=0; while (nw&&s[nw]==mi) --nw,++len;
	while (k&&len<n) --k,len<<=1; len=min(n,len);
	RI i; for (i=1;i<=len;++i) tp[i]=mi;
	for (i=len+1;i<=n;++i) tp[i]=s[nw--];
	if (cmp_min(tp,ans)) for (i=1;i<=n;++i) ans[i]=tp[i];
}
int main()
{
	RI i; for (scanf("%d%d%s",&n,&k,s+1),i=1;i<=n;++i)
	mi=min(s[i],mi),s[(n<<1)-i+1]=s[i],ans[i]='z';
	if (s[n]==mi) solve(s,k);
	for (i=n+1;i<=(n<<1);++i) if (s[i]==mi) solve(s+i-n,k-1);
	return puts(ans+1),0;
}