#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for(int i = a; i < (int)(b); ++i)
#define all(x) begin(x), end(x)
#define rall(x) rbegin(x), rend(x)
#define sz(x) (int)(x).size()
#define F first
#define S second
#define PB push_back
typedef long long ll;
typedef pair<int, int> ii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<bool> vb;
typedef vector<vi> vvi;

template <typename T>
istream& operator>>(istream& _s, vector<T>& _t){
  rep(i, 0, _t.size()) _s >> _t[i];
  return _s;
}

int main(){
  cin.tie(0)->sync_with_stdio(0);
  cin.exceptions(cin.failbit);
  int t; cin >> t;
  while(t--){
    int n, k; cin >> n >> k;
    string s; cin >> s;
    int i = 0;
    for(; i < sz(s)/2; i++){
      if(s[i] != s[sz(s)-i-1]) break;
    }
    cout << (i >= k && sz(s) >= 2*k + 1 ? "YES\n" : "NO\n");
  }
}

### Prompt

In CPP, your task is to solve the following problem:

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.

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for(int i = a; i < (int)(b); ++i)
#define all(x) begin(x), end(x)
#define rall(x) rbegin(x), rend(x)
#define sz(x) (int)(x).size()
#define F first
#define S second
#define PB push_back
typedef long long ll;
typedef pair<int, int> ii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<bool> vb;
typedef vector<vi> vvi;

template <typename T>
istream& operator>>(istream& _s, vector<T>& _t){
  rep(i, 0, _t.size()) _s >> _t[i];
  return _s;
}

int main(){
  cin.tie(0)->sync_with_stdio(0);
  cin.exceptions(cin.failbit);
  int t; cin >> t;
  while(t--){
    int n, k; cin >> n >> k;
    string s; cin >> s;
    int i = 0;
    for(; i < sz(s)/2; i++){
      if(s[i] != s[sz(s)-i-1]) break;
    }
    cout << (i >= k && sz(s) >= 2*k + 1 ? "YES\n" : "NO\n");
  }
}

```