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.*;
import java.math.*;
import java.awt.Point;

public final class Main {
    BufferedReader br;
    StringTokenizer st;
    
    {
        st = null;
        br = new BufferedReader(new InputStreamReader(System.in));
    }
    
    public static void main(String[] args) throws Exception {
        new Main().run();
    }
    
    void run() throws Exception {
        int n = ni(), k = ni();
        String s = nt();
        List<String> pref = prefixes(s);
        List<String> suff = suffixes(s);
        
        String common = "";
        for(int i=0; i<pref.size(); i++) {
            for(int j=0; j<suff.size(); j++) {
                if(pref.get(i).equals(suff.get(j))) {
                    if(pref.get(i).length() > common.length())
                        common = pref.get(i);
                }
            }
        }
        
        //pl(common);
        
        String ans = s, appender = s.substring(common.length());
        for(int i=1; i<k; i++) {
            ans += appender;
        }
        
        pl(ans);
    }
    
    List<String> suffixes(String s) {
        List<String> ret = new ArrayList<>();
        for(int i=0; i<s.length(); i++) {
            ret.add(s.substring(i, s.length()));
        }
        return ret;
    }
    
    List<String> prefixes(String s) {
        List<String> ret = new ArrayList<>();
        for(int i=1; i<s.length(); i++) {
            ret.add(s.substring(0, i));
        }
        return ret;
    }
    
    // I/O
    String nt() throws Exception {
        if(st == null || !st.hasMoreTokens()) {
            st = new StringTokenizer(br.readLine(), " ");
        }
        return st.nextToken();
    }
    
    int ni() throws Exception {
        return Integer.parseInt(nt());
    }
    
    long nl() throws Exception {
        return Long.parseLong(nt());
    }
    
    void p(Object o) {
        System.out.print(o);
    }
    
    void pl(Object o) {
        System.out.println(o);
    }
    
    int[] nia(int n) throws Exception {
        int[] arr = new int[n];
        for(int i=0; i<n; i++)arr[i] = ni();
        return arr;
    }
    
    long[] nla(int n) throws Exception {
        long[] arr = new long[n];
        for(int i=0; i<n; i++)arr[i] = nl();
        return arr;
    }
}