#include <bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define ll long long
#define lld long double
#define ull unsigned long long
#define left(a, v) lower_bound(a.begin(), a.end(), v)-a.begin()
#define print(a) for (auto const& i : a) cout << i << "\n"; cout << "\n";
using namespace std;
const ll BASE = 31, LIM = 200005, MOD = 1e9 + 7;
ll h[LIM]{0};
ll power[LIM]{1};
ll gethash(ll l, ll r) {
return (h[r] - h[l - 1] * power[r - l + 1] + MOD * MOD) % MOD;
}
void solve() {
ll n, l, r;
cin >> n >> l >> r;
string s;
cin >> s;
for (ll i = 1; i <= n; i++){
power[i] = (power[i - 1] * BASE) % MOD;
}
ll k = l;
for (ll i = 1; i <= n; i++){
h[i] = (h[i - 1] * BASE + s[i - 1] - 'a' + 1) % MOD;
}
l = 1, r = n; ll res = 0;
while (l <= r) {
ll m = l + r >> 1;
ll d = 0;
ll f = gethash(1, m);
ll i = 1;
while ( m + 1 >= i) {
if (gethash(i, i+m-1) == f) {
d++;
i += m;
}
else i++;
}
if (d < k){
r = m-1;
}
else{
l = m + 1;
res = m;
}
}
cout << res << "\n";
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
ll t;
cin >> t;
while (t--){
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBsbGQgbG9uZyBkb3VibGUKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgbGVmdChhLCB2KSBsb3dlcl9ib3VuZChhLmJlZ2luKCksIGEuZW5kKCksIHYpLWEuYmVnaW4oKQojZGVmaW5lIHByaW50KGEpIGZvciAoYXV0byBjb25zdCYgaSA6IGEpIGNvdXQgPDwgaSA8PCAiXG4iOyBjb3V0IDw8ICJcbiI7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGxsIEJBU0UgPSAzMSwgTElNID0gMjAwMDA1LCBNT0QgPSAxZTkgKyA3OwpsbCBoW0xJTV17MH07CmxsIHBvd2VyW0xJTV17MX07CmxsIGdldGhhc2gobGwgbCwgbGwgcikgewogIHJldHVybiAoaFtyXSAtIGhbbCAtIDFdICogcG93ZXJbciAtIGwgKyAxXSArIE1PRCAqIE1PRCkgJSBNT0Q7Cn0Kdm9pZCBzb2x2ZSgpIHsKICBsbCBuLCBsLCByOwogIGNpbiA+PiBuID4+IGwgPj4gcjsgCiAgc3RyaW5nIHM7IAogIGNpbiA+PiBzOyAKICBmb3IgKGxsIGkgPSAxOyBpIDw9IG47IGkrKyl7CiAgICBwb3dlcltpXSA9IChwb3dlcltpIC0gMV0gKiBCQVNFKSAlIE1PRDsKICB9CiAgbGwgayA9IGw7CiAgZm9yIChsbCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgaFtpXSA9IChoW2kgLSAxXSAqIEJBU0UgKyBzW2kgLSAxXSAtICdhJyArIDEpICUgTU9EOwogIH0KICBsID0gMSwgciA9IG47IGxsIHJlcyA9IDA7CiAgd2hpbGUgKGwgPD0gcikgewogICAgbGwgbSA9IGwgKyByID4+IDE7CiAgICBsbCBkID0gMDsKICAgIGxsIGYgPSBnZXRoYXNoKDEsIG0pOwogICAgbGwgaSA9IDE7CiAgICB3aGlsZSAoIG0gKyAxID49IGkpIHsKICAgICAgaWYgKGdldGhhc2goaSwgaSttLTEpID09IGYpIHsKICAgICAgICBkKys7CiAgICAgICAgaSArPSBtOwogICAgICB9CiAgICAgIGVsc2UgaSsrOwogICAgfQogICAgaWYgKGQgPCBrKXsKICAgIAlyID0gbS0xOwogICAgfSAKICAgIGVsc2V7CiAgICAgIGwgPSBtICsgMTsKICAgICAgcmVzID0gbTsKICAgIH0KICB9CiAgY291dCA8PCByZXMgPDwgIlxuIjsKfQppbnQgbWFpbigpIHsKICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgbGwgdDsKICBjaW4gPj4gdDsKICB3aGlsZSAodC0tKXsKICAgIHNvbHZlKCk7IAogIH0KICByZXR1cm4gMDsKfQ==