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.
// Motto:-Fail early,Fail Often,Fail Forward.
//	while(true)
// {
//     if(AC)
//     {
//         break;
//     }
//     else if(Contest Over)
//     {
//         Try.
//         Check out Editorial.
//         Understand.
//         Find out your Mistake.
//         Learn the topic (if new).
//         Solve Problems on that topic (if new).
//         Upsolve that problem.
//         break;
//     }
//     else
//     {
//         Try.
//         Use Pen-Paper.
//         Find errors, edge cases, etc.
//         continue;
//     }
// }
    #include<bits/stdc++.h>
	using namespace std;
	//=============================LOL======================
	#define int         long long
    #define double      long double
    #define pb          push_back
    #define pf          push_front
    #define pii         pair<int,int>
    #define vi          vector<int>
    #define vii         vector<pii>
    #define vs          vector<string>
    #define all(a)      (a).begin(),(a).end()
    #define rall(a)     (a).rbegin(),(a).rend()
    #define x           first
    #define y           second
    #define endl        '\n'
	#define sz(x)       (int)(x).size()
	#define thunder     ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
	//=============================LOL========================
	//++++++++++++++++++++++++Optimisations+++++++++++++++
	//#pragma GCC optimize("O1") 
	//#pragma GCC optimize("O2")
	//#pragma GCC optimize("O3") 
	//#pragma GCC optimize("Os") 
	//#pragma GCC optimize("Ofast") 
	#pragma GCC optimize("Ofast")  
	//#pragma GCC target("avx,avx2,fma")
	//++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
	//=========================Chal,Nikal.ab==========================
	#define fo(i,l,u)   for(i=l;i<u;i++)
    #define rfo(i,l,u)  for(i=l;i>=u;i--)
    #define allfo(s)    for(auto it=(s).begin();it!=(s).end();it++)
    #define _init(b)     memset(b,-1,sizeof(b))
    #define _init0(b)     memset(b,0,sizeof(b))
    #define MOD         1000000007
    #define hell        998244353
    #define output(x) cout << (x ? "YES" : "NO")<<endl;
	#define Output(x) cout << (x ? "Yes" : "No")<<endl;
	//=========================Chal,Nikal.ab=============================
	//---------------------------Hushiyari mat dikha---------------------------------
	#define MOD2 (998244353)
    #define MOD3 (1000000009)
    #define PI acos(-1)
    #define eps (1e-8)
	#define INF (1e18) 
	template<class A,class B>ostream&operator<<(ostream&out,const pair<A,B>&a){return out<<"("<<a.first<<","<<a.second<<")";}
	template<class A>ostream&operator<<(ostream&out,const vector<A>&a){for(const A &it:a)out<<it<<" ";return out;}
	template<class A,class B>istream&operator>>(istream&in,pair<A,B>&a){return in>>a.first>>a.second;}
	template<class A>istream&operator>>(istream&in,vector<A>&a){for(A &i:a)in>>i;return in;}
	ifstream cinn("in.txt");ofstream coutt("out.txt");
	int poww(const int &a,int b,const int &m=MOD){if(b==0)return 1;int x=poww(a,b/2,m);x=x*x%m;if(b&1)x=x*a%m;return x;} 
	//---------------------------Hushiyari mat dikha--------------------------------------
	int gcd(int a, int b) 
    { 
    if (b == 0) 
        return a; 
    return gcd(b, a % b);    
    }
    bool xx(int a,int li)
    {
        if(a>=0 && a<li) return true;
        return false;
    }
    
    int pw(int a,int b,int p)
    {
        if(b==0) return 1;
        int t=pw(a,b/2,p);
        if(b%2) return (((a*t)%p)*t)%p;
        else  return ((t*t)%p);
    }
    const int N = 1e6;
    vi prime;
    bool ok=false;
    vector<bool> isprime(N+1);
    void sieve()
    {
        for(int i=2;i<=N;i++) isprime[i]=true;
        isprime[0]=isprime[1]=false;
        for(int i=2;i*i<=N;i++)
        {
            if(isprime[i])
            {
                for(int j=i*i;j<=N;j+=i)
                {
                    isprime[j]=false;
                }
            }
        }
        for(int i=0;i<=N;i++)
        {
            if(isprime[i]) {prime.pb(i);}
        }
    }
    int A[(int)1e5 + 10];
    int cnt[(int)1e5 + 10];
    signed main()
    {
        thunder;
        int t,n,c,m,h,a,b,k,f1,f2,t1,t2,i,j,ans=0,f;
        cin>>t;
        while(t--)
        {
            cin>>n>>m;
            string s;
            cin>>s;
            if(m==0)
            {
                cout<<"YES"<<endl;
                continue;
            }
            i=0;j=n-1;
            c=0;
            while(i<j)
            {
                if(s[i]==s[j]) c++;
                else break;
                // if(c==m) break;
                i++;
                j--;
                if(c==m) break;
            }
            if(c==m && i<=j) cout<<"YES"<<endl;
            // else if(c>m) cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
    }