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.
def zip_sorted(a,b):

	# sorted  by a
	a,b = zip(*sorted(zip(a,b)))
	# sorted by b
	sorted(zip(a, b), key=lambda x: x[1])

	return a,b

def number_to_list(a):

	b = []

	while a>=1:

		c = a%10

		a = int(a/10)


		b.append(c)

	return list(reversed(b))

def str_list_to_int_list(a):


	a = list(map(int,a))

	return a

def make_1d_array(n,inti= 0):

	a = [inti for _ in range(n)]

	return a

def make_2d_array(n,m,inti= 0):

	a = [[inti for _ in range(m)] for _ in range(n)]

	return a

def make_3d_array(n,m,k,inti= 0):

	a = [[[inti for _ in range(k)] for _ in range(m)] for _ in range(n)]

	return a

def gcd(a,b):

	if(b==0): 
		return a

	else:
		return gcd(b,a%b);



import sys
input = sys.stdin.readline
I = lambda : list(map(int,input().split()))
S = lambda : list(map(str,input()))



t,=I()
for t1 in range(t):
	n,k = I()
	s 	= S()[:-1]
	if k==0:
		print('YES')
	else:	
		count = 0
		countx = 0
		if n%2==0:
			n1 = n-1
		else:
			n1 = n
		for i in range(int(n1/2)):
			if s[i]==s[n-i-1]:
				count+=1
			else:
				countx = 1
				break
		if countx==1:
			if count>=k:
				print('YES')
			else:
				print('NO')
		else:
			if count>=k:
				print('YES')
			else:
				print('NO')

