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 main() {
  int N,K;
  string S;
  cin >> N >> K >> S;
  K--;
  string T = S;
  
  for (int i=0; i<N; i++) {
    T[i] = S[N-1-i];
  }
  S += T;
  
  string ans = T;
  string term = T;
  char c;
  for (int i=0; i<N; i++) {
    for (int j=0; j<N; j++) {
      term[j] = S[j+i];
    }
    ans = min(ans,term);
  }
  c = ans[0];
  int num = 1;
  for (int i=1; i<N; i++) {
    if (ans[i] == c) {
      num++;
    }
    else {
      break;
    }
  }
  int fn = num;
  for (int i=0; i<K; i++) {
    num *= 2;
    if (num >= N*2) {
      for (int j=0; j<N; j++) {
        cout << c;
      }
      cout << endl;
      return 0;
    }
  }
  num -= fn;
  for (int i=0; i<N; i++) {
    if (i<num) {
      cout << c;
    }
    else {
      cout << ans[i-num];
    }
  }
  cout << endl;
  return 0;
}