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 SplitIt {

    public static String solution = "";

    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int cases = 0;

        try {
            cases = Integer.parseInt(br.readLine().trim());
            Solution sol = new Solution();

            for (int i = 0; i < cases; i++) {
                StringBuilder sb = new StringBuilder();
                sb.append(br.readLine());
                sb.append(" " + br.readLine());
                System.out.println(sol.solve(sb.toString()));
            }
        } catch (IOException io) {
            System.err.println("Wrong input");
        }
    }
}

class Solution {

    public String solve(String input) {
        /* Describe your Logic
        if palindrome it works else not
        edge cases: if(k==0) return "YES"
        15-1/2 = 7


        abcdefghijklmnop
         */
        StringTokenizer sk = new StringTokenizer(input);
        int n = Integer.parseInt(sk.nextToken());
        int k = Integer.parseInt(sk.nextToken());

        String s = sk.nextToken();

        if(k==0) return "YES";
        if(2*k==n) return "NO";

        StringBuilder sb = new StringBuilder();
        String a = s.substring(0, k);
        String b = sb.append(s.substring(n-k)).reverse().toString();
        if(a.equals(b)) return "YES";
        else return "NO";

    }
}
