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.StringTokenizer;


public class A506 {
    FastScanner in;
    PrintWriter out;

    public static void main(String[] arg) {
        new A506().run();
    }

    public void solve() throws IOException {
        int n = in.nextInt();
        int k = in.nextInt();
        String s = in.next();
        if (n == 1) {
            for (int i = 0; i < k; i++) {
                out.print(s);
            }
            return;
        }
        if (k == 1) {
            out.print(s);
            return;
        }
        for (int i = 1; i < n; i++) {
            String ssub = s.substring(i, n);
            String prefsub = s.substring(0, n - i);
            if (ssub.compareTo(prefsub) == 0) {
                String add = s.substring(0, i);
                out.print(add);
                for (int j = 0; j < k - 1; j++) {
                    out.print(add);
                }
                out.print(ssub);
                return;
            }
        }
        for (int i = 0; i < k; i++) {
            out.print(s);
        }
    }

    public void run() {
        try {
            in = new FastScanner(new BufferedReader(new InputStreamReader(System.in)));
            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));

            solve();

            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    class FastScanner {
        BufferedReader br;
        StringTokenizer st;

        FastScanner(BufferedReader bufferedReader) {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreTokens()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }



    }
}