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>
#define ALL(x) (x).begin(), (x).end()
#define RALL(x) (x).rbegin(), (x).rend()
#define FSP(x) fixed << setprecision(x)
using namespace std;
using ll = long long;
constexpr ll INF = LLONG_MAX;
const long double PI = acosl(-1);
void Yes() {cout << "Yes\n";}
void No() {cout << "No\n";}
void YES() {cout << "YES\n";}
void NO() {cout << "NO\n";}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	//constexpr ll P = 1e9 + 7;
	//constexpr ll P = 998244353;

	ll n, k;
	string s;
	cin >> n >> k >> s;

	string t = s;
	reverse(ALL(t));
	string u = s + t;

	set<string> st;
	for (ll i = 0; i < n + 1; i++) st.insert(u.substr(i, n));

	deque<char> ans;
	for (ll i = 0; i < n; i++) ans.push_back((*st.begin())[i]);

	auto out_ans = [&] () {
		while (ans.size()){
			cout << ans.front();
			ans.pop_front();
		}cout << endl;
	};

	if (k == 1) {
		out_ans();
		return 0;
	}

	while (--k) {
		ll idx = -1;
		for (ll i = 0; i < n - 1; i++) {
			if (ans[i] != ans[i + 1]) {
				idx = i + 1;
				break;
			}
		}
		if (idx == -1) {
			out_ans();
			return 0;
		} else {
			while (idx--) {
				ans.push_front(ans.front());
				ans.pop_back();
			}
		}
	}
	out_ans();
}
