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.util.*;
import java.io.*;

public class TaskA {
    FastReader fr = new FastReader();
    StringBuilder sb = new StringBuilder();

    public void run() {
        int tt = fr.nextInt();
        while(tt-->0){
            int n=fr.nextInt();
            int k=fr.nextInt();
            char s[]=fr.next().toCharArray();
            if(k==0){
                sb.append("YES\n");
            }
            else{
                int i=0,j=s.length-1;
                boolean ok=false;
                while(i<=j){
                    if(k==0){
                        ok=true;
                        break;
                    }
                    if(s[i]==s[j]){
                        --k;
                        i++;
                        j--;
                    }
                    else{
                        break;
                    }
                }
                if(ok){
                    sb.append("YES\n");
                }
                else{
                    sb.append("NO\n");
                }
            }
        }
        System.out.println(sb);
    }
    boolean isPalindrome(char s[]){
        for(int i=0,j=s.length-1;i<=j;i++,j--){
            if(s[i]==s[j]){
                continue;
            }
            else{
                return false;
            }
        }
        return true;
    }
    public void ruffleSort(int a[]) {
        int n = a.length;
        Random r = new Random();
        for (int i = 0; i < a.length; i++) {
            int oi = r.nextInt(n), temp = a[i];
            a[i] = a[oi];
            a[oi] = temp;
        }

        //then sort
        Arrays.sort(a);
    }

    public static void main(String[] args) {
        new TaskA().run();
    }

    class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        public String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    System.out.println(e);
                }
            }
            return st.nextToken();
        }

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

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

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

        public String nextLing() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                System.out.println(e);
            }
            return str;
        }
    }
}