#include <bits/stdc++.h>
using namespace std;
#define int long long
#define MAXN 200001
int t, n, k;
int N[MAXN];
string str;
bool check(int x){
string t(str.substr(0, x)), s(str.substr(x));
int p(0);
vector<int> vec;
for (int i(1); i<t.size(); ++i){
while (t[i] != t[p] && p) p = N[p];
if (t[i] == t[p]) N[i+1] = ++p;
}
p = 0;
for (int i(0); i<s.size(); ++i){
while (s[i] != t[p] && p) p = N[p];
p += (s[i] == t[p]);
if (p == t.size()) vec.push_back(i-t.size()+1);
}
int maxn(INT_MIN), cnt(1);
for (int i(0); i<vec.size(); ++i){
if (vec[i] > maxn+x-1){
++cnt;
maxn = vec[i];
}
}
return cnt >= k;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
for (cin >> t; t; --t){
cin >> n >> k >> k >> str;
int l(0), r(n/k), mid;
while (l < r){
mid = (l+r+1)>>1;
if (check(mid)) l = mid;
else r = mid-1;
}
cout << l << '\n';
}
return 0;
}