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>
#include<algorithm>
#include <fstream>
#include <sstream>
#include <string>
using namespace std;
#define pb push_back
#define pf push_front
#define pob pop_back
#define pof pop_front
#define is insert
#define rep1(i,a,b) for(long long i=a;i<=b;i++)
#define mh make_heap
#define F first
#define S second
//#define fin cin
//#define fout cout
#define file ifstream fin("input.txt");ofstream fout("output.txt");
#define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fr(n) for(int i=0;i<n;i++)
#define rep(i,a,b) for(int i=a;i<b;i++)
#define ALL(x) (x).begin(), (x).end()
typedef long long int ll;
#define int long long
typedef pair<ll,ll> pairs;
typedef vector<ll> vi;
#define tr(it,ct) for(auto &(it) : (ct))
typedef vector<pairs> vpair;
int power(int a,int n,int lelo)
 {
         if(n==0)
                 return 1;
         if(n==1)
                 return a;
         if(n==2)
                 return (a*a)%lelo;
         if(n%2)
                 return (a*power(a,n-1,lelo))%lelo;
         else
                 return power(power(a,n/2,lelo),2,lelo)%lelo;
 }
  const int mod=1000000007;
  const int mod2=998244353;
  const int INF=1e18;
  const int N=1e6+16;
  const int M=1e2+12;



 

void solve()
{
int n,k;cin>>n>>k;
string s;cin>>s;
int f=0,l=s.size()-1;
fr(k)
{
    if(s[f]==s[l])
    {
        f++,l--;
    }
    else 
    {
        cout<<"NO"<<endl;return;
    }
    //cout<<f<<" "<<l<<endl;
}
if(f<=l)
{
  cout<<"YES"<<endl;return;
}
else 
{
    cout<<"NO"<<endl;return;
}
}


int32_t main()
{
    fast;
    int t=1;
  
  cin>>t;
    fr(t)solve();
}
