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 Main {

    public static void main(String[] args) throws IOException {
//        out = new PrintWriter(new File("output.txt"));
//        br = new BufferedReader(new FileReader(new File("input.txt")));
        int GOVNO = 1;
        for (int NASRAL = 0; NASRAL < GOVNO; NASRAL++) {
            int n = nextInt();
            int k = nextInt();
            char[] p = next().toCharArray();
            int max = 0;
            for (int len = 1; len < n; len++) {
                int ind = n - len;
                boolean norm = true;
                for (int i = 0; i < len; i++) {
                    if (p[i] != p[ind]) norm = false;
                    ind++;
                }
                if (norm) max = len;
            }
            if(max == 0){
                for (int i = 0; i < k; i++) {
                    for (int j = 0; j < n; j++) {
                        out.print(p[j]);
                    }
                }
            }else if(max == n){
                for (int i = 0; i < n; i++) {
                    out.print(p[i]);
                }
                for (int i = 0; i < k - 1; i++) {
                    out.print(p[i]);
                }
            }else {
                for (int i = 0; i < n; i++) {
                    out.print(p[i]);
                }
                for (int i = 0; i < k - 1; i++) {
                    for (int j = max; j < n; j++) {
                        out.print(p[j]);
                    }
                }
            }
        }
        out.close();
    }

    static int ask(int l, int r) throws IOException {
        out.println("? " + (l + 1) + " " + (r + 1));
        out.flush();
        return nextInt() - 1;
    }

    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static PrintWriter out = new PrintWriter(System.out);
    static StringTokenizer in = new StringTokenizer("");


    public static String next() throws IOException {
        while (in == null || !in.hasMoreTokens()) {
            in = new StringTokenizer(br.readLine());
        }
        return in.nextToken();
    }

    public static int nextInt() throws IOException {
        return Integer.parseInt(next());
    }

    public static double nextDouble() throws IOException {
        return Double.parseDouble(next());
    }

    public static long nextLong() throws IOException {
        return Long.parseLong(next());
    }
}