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 <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#include <vector>
#include <stack>
#include <unordered_set>
#include <random>
/*#include <cstdio>
#include <ctime>*/

using namespace std;

bool isPalindrome(string& s, int& l)
{
	bool is = true;
	for (int i = 0; i <= floor(s.length() / 2); i++)
		if (s[i] != s[l - i - 1])
		{
			is = false;
			break;
		}
	return is;
}	

void solve (int& n, int& k, string& s)
{
	bool ans = false;
	int l = s.length();
	string tmp = s;
	while (floor(l / 2) >= k && !ans)
	{
		//cout << "Start run with tmp: " << tmp << " with ans= " << ans << endl;
		if (l % 2 == 0 && (l/2) > k && isPalindrome(tmp, l))
			ans = true;
		else
		{
			//cout << "old tmp: " << tmp;
			tmp = tmp.substr(0, floor(l / 2)) + tmp.substr(floor(l / 2) + 1);
			l = tmp.length();
			//cout << "new tmp: " << tmp << endl;
			if (floor(l / 2) >= k && isPalindrome(tmp,l))
				ans = true;
		}
		//cout << "End run with tmp: " << tmp << " with ans= " << ans << endl;
		
	}


	if (ans)
		cout << "YES";
	else
		cout << "NO";
	cout << endl;
}

int main() {
	int t;
	cin >> t;
	while (t--)
	{
		int n, k;
		cin >> n >> k;
		string s;
		cin >> s;
		solve(n, k, s);

	}
	return 0;
}