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:
//package tets;
import java.util.*;
import java.io.*;
public class Codeforces {
	
	//static int ans;
	public static void main(String[]args) throws IOException
	{
		Scanner sc=new Scanner(System.in);
		int size=sc.nextInt();
		int k=sc.nextInt();
		
		String given=sc.next();
		StringBuilder str=new StringBuilder(given);
		int count=1;
		int i=1;
		
		while(count<k) {
			if(i==str.length())
			{
				str.append(given);
				
			}
			String check=str.substring(i).toString();
			
			if(Sub(check,given))
			{
				int p=check.length();
				str.append(given.substring(p));
				count++;
			}
			i++;
		}
		System.out.println(str);
//		    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//		 
//		        	   int n=Integer.parseInt(br.readLine());
//                                       
//                       int max=0;
//                       
//                       TreeMap<Integer,Integer>tm=new TreeMap<>();
//                       
//                       for(int i=0;i<n;i++) {
//                           String[]T=br.readLine().split(" ");
//                    	   int start=Integer.parseInt(T[0]);
//                    	   int end=Integer.parseInt(T[1]);
//                
//                    	   tm.put(start,tm.getOrDefault(start, 0)+1);
//                    	   tm.put(end,tm.getOrDefault(end,0)-1);
//                       }
//                       
//                       int ans=0;
//                       
//                       Stack<Integer>st=new Stack<>();
//		        	   int temp=0;
//                      for(Map.Entry<Integer, Integer>x:tm.entrySet()) {
//                    	 
//                    	  int val=x.getValue();
//                    	  
//                    	  //System.out.println(x.getKey()+" "+x.getValue());
//                    	  if(val<0)
//                    	  {
//                    		  while(val!=0)
//                    		  {
//	                    		  if(temp==n-1)
//	                    		  {
//	                    			  int p=st.pop();
//	                    			int t=x.getKey()-p;
//	                    			System.out.println(x.getKey()+" "+p);
//	                    		  ans=Math.max(ans,t);
//	                    		  }
//	                    		  else
//	                    		  st.pop();
//	                    		  
//	                    		  temp--;
//	                    		  val++;
//                    		  }
//                    	  }
//                    	  else
//                    	  {
//                    		  while(val!=0) {
//                    		  st.push(x.getKey());
//                    		  temp++;
//                    		  val--;
//                    		  }
//                    	  }
//                    	//System.out.println(x.getKey()+" "+x.getValue()+" "+ans+" "+temp);
//                    	  
//                      }
//                      System.out.println(ans);
                       
	}
	private static Boolean Sub(String a, String b) {
		
		for(int j=0;j<a.length();j++) {
			if(a.charAt(j)!=b.charAt(j))
				return false;
		}
		
		return true;
	}
	
}