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.text.*;
import static java.lang.System.out;

public class acm {
	public static void main( String [ ] args ) {
		Scanner in = new Scanner( ) ;
		//DecimalFormat df = new DecimalFormat( ".##########" ) ;
		int n = in.nextInt( ) ;
		int k = in.nextInt( ) ;
		String s = in.next( ) ;
		int res = -1 ;
		for( int i = 0; i < s.length( ); i++ ) {
			if( s.substring( 0 , i ).equals( s.substring( s.length( ) - i ) ) )
				res = i;
		}
		out.print( s );
		for( int i = 0; i < k - 1; i++ ) 
			out.print( s.substring( res ) ) ;
	}
	public static class Scanner {
        BufferedReader br;
        StringTokenizer st;
 
        public Scanner( ) {
            br = new BufferedReader( new InputStreamReader( System.in ) );
        }
 
        String next( ) {
            while ( st == null || !st.hasMoreElements( ) ) {
                try {
                    st = new StringTokenizer( br.readLine( ) );
                }
                catch ( IOException  e ) {
                    e.printStackTrace( );
                }
            }
            return st.nextToken( );
        }
 
        int nextInt( ) {
            return Integer.parseInt( next( ) );
        }
 
        long nextlong( ) {
            return Long.parseLong( next( ) );
        }
        double nextdouble( ) {
            return Double.parseDouble( next( ) );
        }
        String nextline( ) {
            String str = "";
            try {
                str = br.readLine( );
            }
            catch ( IOException e ) {
                e.printStackTrace( );
            }
            return str;
        }
    }
}