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 int
#define IM               INT_MAX
#define Im               INT_MIN
#define fast             ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define read             freopen("input.txt", "r", stdin)
#define write            freopen("output.txt", "w", stdout)
#define pb(x)            push_back(x)
#define all(v)           sort(v.begin(),v.end())
#define rall(v)          sort(v.rbegin(),v.rend())
#define rev(v)           reverse(v.begin(),v.end())
#define ff               first
#define ss               second
#define mod              1000000007
#define lcm(a, b)        ((a)*((b)/gcd(a,b)))
#define INF              1e18

//template<class T>inline bool rd(T &x){int c=getchar();int sgn=1;while(~c&&c<'0'||c>'9'){if(c=='-')sgn=-1;c=getchar();}for(x=0;~c&&'0'<=c&&c<='9';c=getchar())x=x*10+c-'0'; x*=sgn; return ~c;}

//const int dx[]={+0,+0,+1,-1,-1,+1,-1,+1};
//const int dy[]={-1,+1,+0,+0,+1,+1,-1,-1};

void solve()
{

    string c;

    int k,n;

    cin>>n>>k;

    cin>>c;

    n=c.size();


    int i=0,j=n-1,co=0;

    while(i<j && co<k){
        if(c[i]==c[j])i++,j--,co++;
        else break;
    }


    co*=2;

    if(co<n && co==2*k)cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
}


int main()
{

    fast;

    int t;
    cin>>t;

    while(t--)
        solve();


    return 0;
}
