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 <algorithm>
#include <cmath>
#include <cstdio>
#include <functional>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;
using ll = long long;
int main() {
  ll n, k;
  cin >> n >> k;
  string s;
  cin >> s;
  string t = s;
  reverse(t.begin(), t.end());
  s += t;
  reverse(s.begin(), s.end());
  string u = s;
  for(int i = 0; i < n; i++) {
    string tmp = s.substr(i, n);
    u = min(u, tmp);
  }

  int cnt = 1;
  for(int i = 0; i < n - 1; i++) {
    if(u[i] == u[i + 1]) {
      cnt++;
    } else {
      break;
    }
  }
  ll num = cnt * (ll)pow(2, min({n, k - 1, (ll)16}));
  if(n < num) {
    for(int i = 0; i < n; i++) {
      cout << u[0];
    }
  } else {
    for(int i = 0; i < num; i++) {
      cout << u[0];
    }
    for(int i = cnt; i < n - num + cnt; i++) {
      cout << u[i];
    }
  }

  cout << endl;

  return 0;
}