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.
#ifdef IVELOID
 #define debug(x) cerr<<#x<<":"<<x<<endl
#else
 #define debug(x)
#endif
#include<bits/stdc++.h>
using namespace std;
#define int long long
using ll=long long;
using ld=long double;
const int mod=998244353;
#define sz(x) (int)x.size()
#define all(x) x.begin(),x.end()
#define rep(i,a,b) for(int i=(a);i<=b;++i)
#define inc(i,a,b) for(int i=(a);i<(int)b;++i)
using pii=pair<int,int>;
#define fi first
#define se second
using vi=vector<int>;
using vvi=vector<vector<int>>;
using vpii=vector<pii>;
template<class T>T cmax(T &a,T b){return a=max(a,b);}
template<class T>T cmin(T &a,T b){return a=min(a,b);}
ll acc(const vector<int> &a){return accumulate(all(a),0LL);}
double acc(const vector<double> &a){return accumulate(all(a),0.0);}
ll qpow(ll a,ll x,ll p=mod){ll res=1%p;a=a%p;for(;x;x>>=1,a=a*a%p) if(x&1) res=(res*a)%p;return res;}

const int inf=1e9;
// head

void solve(){
  int n,k;
  cin>>n>>k;
  string s;
  cin>>s;
  int cnt =0;
  for(int i=0,j=n-1;j-i-1>0&&i<j;++i,--j){
    if(s[i]==s[j]) cnt++;
    else break;
  }
  cout<<(cnt>=k?"YES\n":"NO\n");
}

signed main() {
  ios::sync_with_stdio(false),cin.tie(0);
  int t;
  cin>>t;
  while(t--) solve();
  return 0;
}
