Kawashiro Nitori is a girl who loves competitive programming.

One day she found a string and an integer. As an advanced problem setter, she quickly thought of a problem.

Given a string s and a parameter k, you need to check if there exist k+1 non-empty strings a_1,a_2...,a_{k+1}, such that $$$s=a_1+a_2+… +a_k+a_{k+1}+R(a_k)+R(a_{k-1})+…+R(a_{1}).$$$ 

Here + represents concatenation. We define R(x) as a reversed string x. For example R(abcd) = dcba. Note that in the formula above the part R(a_{k+1}) is intentionally skipped.

Input

The input consists of multiple test cases. The first line contains a single integer t (1≤ t≤ 100) — the number of test cases. The description of the test cases follows.

The first line of each test case description contains two integers n, k (1≤ n≤ 100, 0≤ k≤ ⌊ n/2 ⌋) — the length of the string s and the parameter k.

The second line of each test case description contains a single string s of length n, consisting of lowercase English letters.

Output

For each test case, print "YES" (without quotes), if it is possible to find a_1,a_2,…,a_{k+1}, and "NO" (without quotes) otherwise.

You can print letters in any case (upper or lower).

Example

Input


7
5 1
qwqwq
2 1
ab
3 1
ioi
4 2
icpc
22 0
dokidokiliteratureclub
19 8
imteamshanghaialice
6 3
aaaaaa


Output


YES
NO
YES
NO
YES
NO
NO

Note

In the first test case, one possible solution is a_1=qw and a_2=q.

In the third test case, one possible solution is a_1=i and a_2=o.

In the fifth test case, one possible solution is a_1=dokidokiliteratureclub.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class A_Split_it {

    static Scanner scanner=new Scanner();
    
    static int testCases,n,k;
    
    static String s;
    
    static void solve(){
        
        if( k==0 ){
            
            System.out.println("YES");
            
            return;
            
        }
        
        StringBuilder sb=new StringBuilder();
        
        sb.append(s);
        
  //      sb=sb.reverse();
        
 char ch[]=sb.toString().toCharArray();
        
 int l=0,r=ch.length-1,xx=0;
 boolean b=true;
 
 while( l<r ){
     
     if( ch[l]!=ch[r] ){
         
         b=false;
         break;
         
     }
     
     l++;
     r--;
     xx++;
     
 }
 
 if( k%2==0 && !b ){
     
     System.out.println("NO");
     
 }else{
     
     b=true;
     
     if( k>xx ){
         
         b=false;
         
     }
     
     if( n%2==0 && k==n/2 ){
         
         b=false;
         
     }
     
     if( b ){
         
         System.out.println("YES");
         
     }else{
         
         System.out.println("NO");
         
     }
     
 }
 
    }
    
    public static void main(String[] args) throws IOException {
        
        testCases=scanner.nextInt();
        
        for(int i=0;i<testCases;i++){
            
            n=scanner.nextInt();
            k=scanner.nextInt();
            
            s=scanner.next();
            
            solve();
            
        }
        
    }
    
     static class Scanner{
    
    BufferedReader in;

   StringTokenizer st;    

        public Scanner() {
        
            in=new BufferedReader( new InputStreamReader( System.in ) );
            
        }
        
    String next() throws IOException{
        
        while( st==null || !st.hasMoreElements() ){
            
            st=new StringTokenizer(in.readLine());
            
        }
        
        return st.nextToken();
        
    }
   
    int nextInt() throws IOException{
        
        return Integer.parseInt( next() );
        
    }
   
    long nextLong() throws IOException{
        
        return Long.parseLong( next() );
        
    }
    
}
    
}
/*

7
5 1
qwqwq
2 1
ab
3 1
ioi
4 2
icpc
22 0
dokidokiliteratureclub
19 8
imteamshanghaialice
6 3
aaaaaa

*/