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.
#include<bits/stdc++.h>
using namespace std;
#define ff              first
#define ss              second
#define int             long long
#define ll              long long
#define pb              push_back
#define pii             pair<int,int>
#define vi              vector<int>
#define mii             map<int,int>
#define rep(i,n)        for(int i=0;i<n;i++)
#define rep1(i,n)        for(int i=1;i<n;i++)
#define VALUE(x) cerr << "The value of " << #x << " is " << x << endl
#define mod 1000000007
#define pi 3.141592653589793238
#define endl '\n'

// cout<<fixed<<<<setprecision(9)<<ans<<endl;
// lower_bound(start_ptr, end_ptr, num)
// upper_bound(start_ptr, end_ptr, num)

int ceil(int a, int b) {
	if (a % b == 0) {
		return a / b;
	}
	else {
		return a / b + 1;
	}
}

bool isPrime(int n) {
	if (n == 1) {
		return false;
	}

	for (int i = 2; i * i <= n; i++) {
		if (n % i == 0)
			return false;
	}
	return true;
}

int32_t main()
{
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	int t = 1;
	cin >> t;
	while (t--) {
		int n, k;
		cin >> n >> k;
		string s;
		cin >> s;
		// if (k == 0) {
		// 	cout << "YES" << endl;
		// 	continue;
		// }



		int l = 0, r = n - 1;

		bool flag = true;
		int count = 0;

		while (l < r) {
			if (count == k) {
				break;
			}
			if (s[l] == s[r]) {
				l++;
				r--;
			}
			else {
				break;
			}
			count++;

		}
		if (count >= k && r - l + 1 >= 1) {
			cout << "YES" << endl;
		}
		else {
			cout << "NO" << endl;
		}


	}
	cin.clear();
	cin.get();
	return 0;
}