Problem: You are given a string t consisting of n lowercase Latin letters and an integer number k.

Let's define a substring of some string s with indices from l to r as s[l ... r].

Your task is to construct such string s of minimum possible length that there are exactly k positions i such that s[i ... i + n - 1] = t. In other words, your task is to construct such string s of minimum possible length that there are exactly k substrings of s equal to t.

It is guaranteed that the answer is always unique.

Input

The first line of the input contains two integers n and k (1 ≤ n, k ≤ 50) — the length of the string t and the number of substrings.

The second line of the input contains the string t consisting of exactly n lowercase Latin letters.

Output

Print such string s of minimum possible length that there are exactly k substrings of s equal to t.

It is guaranteed that the answer is always unique.

Examples

Input

3 4
aba


Output

ababababa


Input

3 2
cat


Output

catcat

Solution (in JAVA):

Solution:
import java.io.*;
import java.util.*;

public class A {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(reader.readLine());
        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());
        StringBuilder sb = new StringBuilder(reader.readLine());

        StringBuilder pref = new StringBuilder();
        StringBuilder suff = new StringBuilder();

        int pos = 0;
        for (int i = 1; i <= n / 2; i++) {
            boolean flag = true;
            for (int j = 0; j < i; j++) {
                if (sb.charAt(j) != sb.charAt(n - i + j)) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                pos = i;
            }
        }

        for (int i = 0; i < pos; i++) {
            pref.append(sb.charAt(i));
        }

        for (int i = pos; i < n; i++) {
            suff.append(sb.charAt(i));
        }

        StringBuilder answer = new StringBuilder(pref);
        for (int i = 0; i < k; i++) {
            answer.append(suff);
        }

        int subs = 0;
        int end = 0;
        br : for (int i = 0; i < answer.length(); i++) {
            boolean flag = true;
            for (int j = 0; j < sb.length(); j++) {
                if (i + j < answer.length()) {
                    if (answer.charAt(i + j) != sb.charAt(j)) {
                        flag = false;
                        break;
                    }
                } else {
                    break br;
                }
            }

            if (flag) {
                subs++;
            }
            if (subs == k) {
                end = i + sb.length();
                break;
            }
        }

        for (int i = 0; i < end; i++) {
            writer.write(answer.charAt(i));
        }
        writer.close();
    }
}