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 ll long long 
#define scn(n) scanf("%d",&n)
#define lscn(n) scanf("%lld",&n)
#define lpri(n) printf("%lld",n)
#define pri(n) printf("%d",n)
#define pln() printf("\n")
#define priln(n) printf("%d\n",n)
#define lpriln(n) printf("%lld\n",n)
#define fr(i,init,n) for(int i=init;i<n;i++)
#define pb push_back     
#define mp make_pair
#define F first
#define S second
#define gcd __gcd
#define inf INT_MAX
#define ninf INT_MIN
#define f(v,value) find(v.begin(),v.end(),value)
#define asc(a,n) sort(a,a+n)
#define desc(a,n,data_type) sort(a,a+n,greater<data_type>())
#define vasc(v)  sort(v.begin(),v.end())
#define vdesc(v,data_type) sort(v.begin(),v.end(),greater<data_type>())
const int mod = 1e9 + 7;         
const int N = 1e5 + 4;
 
int nooffac(long long a)
{
int c=0;
for(int i=1;i*i<=a;i++)
{
if(a%i==0)
{
c++;
if(a/i!=i)
c++;
}
return c;
}
}
 
ll check(ll val)
{
    ll k2=val;ll t=0;ll sum=0;
    val=val-val%5;
    while(k2>0)
    { 
        k2=k2/5;
         t++;
        //cout<<"k2"<<k2;
    }
    t--;//cout<<t<<" ";
     ll k1=pow(5,t);
     //cout<<k1;
    while(k1>=5)
    {
        
    
        
        sum+=val/k1;
 
        k1=k1/5;
        //cout<<sum<<"@ "<<k1;
        
    }
    //cout<<val<<"sum"<<sum<<" ";
    return sum;
}
 
ll bi_search(ll k)
{
    ll low=0;
    ll high=1e12;
    ll pos;
    while(high>low)
    {
        
        ll mid=(low+high)/2;
        //cout<<"mid"<<mid<<" ";
        if(check(mid)>=k)
        {
            pos=mid; //cout<<pos<<" ";
            high=mid-1;
        }
        else
        low=mid+1;
    }
   return pos;
}
int main()
{
   ll n;
   lscn(n);
   fr(i,0,n)
   {
    
    ll a,k;
    lscn(a);lscn(k);ll h=-1;string str;
    cin>>str;ll k1=k;
    if(k1==0)
    cout<<"YES\n";
    else
    {
    
    fr(i,0,a/2)
    {
        if(str[i]!=str[a-i-1])
        {
            
            break;
        }h=i;
        k--;
        if(k==0)
        break;
    }
    if(k>0)
    cout<<"NO\n";
     
     else
     {
         string str1=str.substr(h+1,a-2*(h+1));
         //cout<<str1<<" ";
         if(str1.length()>0)
         cout<<"YES\n";
         else if(k1==0)
         cout<<"YES\n";
         else
         cout<<"NO\n";
     }
     }
   }
 }
       
       