#include<bits/stdc++.h>
using namespace std;
#define ll long long
void countSort(vector<int>&p,vector<int>&c)
{
int n=p.size();
vector<int>cnt(n);
for(auto it:c) cnt[it]++;
vector<int>p_new(n),pos(n);
pos[0]=0;
for(int i=1;i<n;i++) pos[i]=pos[i-1]+cnt[i-1];
for(auto it:p)
{
int i=c[it];
p_new[pos[i]]=it;
pos[i]++;
}
p=p_new;
}
pair<vector<int>,vector<int>>SuffixArray_LCP(string &s)
{
s+='$';
int n=s.size();
vector<pair<char,int>>suf(n);
for(int i=0;i<n;i++) suf[i]={s[i],i};
sort(suf.begin(),suf.end());
vector<int>p(n),c(n);
for(int i=0;i<n;i++) p[i]=suf[i].second;
c[p[0]]=0;
for(int i=1;i<n;i++)
{
if(suf[i].first==suf[i-1].first) c[p[i]]=c[p[i-1]];
else c[p[i]]=c[p[i-1]]+1;
}
int k=0;
while((1<<k)<n)
{
for(int i=0;i<n;i++) p[i]=(p[i]-(1<<k)+n)%n;
countSort(p,c);
vector<int>c_new(n);
c_new[p[0]]=0;
for(int i=1;i<n;i++)
{
pair<int,int>last={c[p[i-1]],c[(p[i-1]+(1<<k))%n]};
pair<int,int>cur={c[p[i]],c[(p[i]+(1<<k))%n]};
if(cur==last) c_new[p[i]]=c_new[p[i-1]];
else c_new[p[i]]=c_new[p[i-1]]+1;
}
c=c_new;
k++;
}
vector<int>lcp(n);
k=0;
for(int i=0;i<n-1;i++)
{
int pi=c[i],j=p[pi-1];
while(s[i+k]==s[j+k]) k++;
lcp[pi]=k;
k=max(k-1,0);
}
return {p,lcp};
}
template <typename T>
struct SparseTable{
vector <T> dp[32];
T combine(const T& x, const T& y){
return min(x,y);
}
SparseTable(const vector<T> &ar){
int i, j, l, h, n = (int)ar.size();
dp[0] = ar;
for (h = 1, l = 2; l <= n; h++, l <<= 1){
dp[h].resize(n);
for (i = 0, j = i + (l / 2); (i + l) <= n; i++, j++){
dp[h][i] = combine(dp[h - 1][i], dp[h - 1][j]);
}
}
}
T query(int l, int r){
int h = __lg(r - l + 1);
auto res = dp[h][l];
for (l += (1 << h); l <= r; l += (1 << h)){
h = __lg(r - l + 1);
res = combine(res, dp[h][l]);
}
return res;
}
};
signed main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int t;cin>>t;while(t--)
{
int n,m,q;cin>>n>>m>>q;
string a,b;cin>>a>>b;
a=a+'%'+b;
auto[suf,lcp]=SuffixArray_LCP(a);
vector<int>f(m+5);
stack<int>st;
for(int i=0;i<suf.size();i++)
{
if(suf[i]<=n)
{
int mn=lcp[i];
while(st.size())
{
f[suf[st.top()]-n-1]=mn;
mn=min(mn,lcp[st.top()]);
st.pop();
}
}
else
{
st.push(i);
}
}
stack<int>st2;
for(int i=suf.size()-1;i>=0;i--)
{
if(suf[i]>=n)
{
st2.push(i);
}
else
{
int mn=n+m+5;
while(st2.size())
{
mn=min(mn,lcp[st2.top()]);
f[suf[st2.top()]-n-1]=max(mn,f[suf[st2.top()]-n-1]);
st2.pop();
}
}
}
SparseTable<int>sp(f);
while(q--)
{
int l,r;cin>>l>>r;
--l,--r;
int L=1,R=r-l+1,ans=0;
while(L<=R)
{
int mid=L+R>>1;
if(sp.query(l,r-mid+1)>=mid)
{
ans=mid;
L=mid+1;
}
else
{
R=mid-1;
}
}
cout<<ans<<'\n';
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKdm9pZCBjb3VudFNvcnQodmVjdG9yPGludD4mcCx2ZWN0b3I8aW50PiZjKQp7CiAgICBpbnQgbj1wLnNpemUoKTsKICAgIHZlY3RvcjxpbnQ+Y250KG4pOwogICAgZm9yKGF1dG8gaXQ6YykgY250W2l0XSsrOwogICAgdmVjdG9yPGludD5wX25ldyhuKSxwb3Mobik7CiAgICBwb3NbMF09MDsKICAgIGZvcihpbnQgaT0xO2k8bjtpKyspIHBvc1tpXT1wb3NbaS0xXStjbnRbaS0xXTsKICAgIGZvcihhdXRvIGl0OnApCiAgICB7CiAgICAgICAgaW50IGk9Y1tpdF07CiAgICAgICAgcF9uZXdbcG9zW2ldXT1pdDsKICAgICAgICBwb3NbaV0rKzsKICAgIH0KICAgIHA9cF9uZXc7Cn0KcGFpcjx2ZWN0b3I8aW50Pix2ZWN0b3I8aW50Pj5TdWZmaXhBcnJheV9MQ1Aoc3RyaW5nICZzKQp7CiAgICBzKz0nJCc7CiAgICBpbnQgbj1zLnNpemUoKTsKICAgIHZlY3RvcjxwYWlyPGNoYXIsaW50Pj5zdWYobik7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKSBzdWZbaV09e3NbaV0saX07CiAgICBzb3J0KHN1Zi5iZWdpbigpLHN1Zi5lbmQoKSk7CiAgICB2ZWN0b3I8aW50PnAobiksYyhuKTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspIHBbaV09c3VmW2ldLnNlY29uZDsKICAgIGNbcFswXV09MDsKICAgIGZvcihpbnQgaT0xO2k8bjtpKyspCiAgICB7CiAgICAgICAgaWYoc3VmW2ldLmZpcnN0PT1zdWZbaS0xXS5maXJzdCkgY1twW2ldXT1jW3BbaS0xXV07CiAgICAgICAgZWxzZSBjW3BbaV1dPWNbcFtpLTFdXSsxOwogICAgfQogICAgaW50IGs9MDsKICAgIHdoaWxlKCgxPDxrKTxuKQogICAgewogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspIHBbaV09KHBbaV0tKDE8PGspK24pJW47CiAgICAgICAgY291bnRTb3J0KHAsYyk7CiAgICAgICAgdmVjdG9yPGludD5jX25ldyhuKTsKICAgICAgICBjX25ld1twWzBdXT0wOwogICAgICAgIGZvcihpbnQgaT0xO2k8bjtpKyspCiAgICAgICAgewogICAgICAgICAgICBwYWlyPGludCxpbnQ+bGFzdD17Y1twW2ktMV1dLGNbKHBbaS0xXSsoMTw8aykpJW5dfTsKICAgICAgICAgICAgcGFpcjxpbnQsaW50PmN1cj17Y1twW2ldXSxjWyhwW2ldKygxPDxrKSklbl19OwogICAgICAgICAgICBpZihjdXI9PWxhc3QpIGNfbmV3W3BbaV1dPWNfbmV3W3BbaS0xXV07CiAgICAgICAgICAgIGVsc2UgY19uZXdbcFtpXV09Y19uZXdbcFtpLTFdXSsxOwogICAgICAgIH0KICAgICAgICBjPWNfbmV3OwogICAgICAgIGsrKzsKICAgIH0KICAgIHZlY3RvcjxpbnQ+bGNwKG4pOwogICAgaz0wOwogICAgZm9yKGludCBpPTA7aTxuLTE7aSsrKQogICAgewogICAgICAgIGludCBwaT1jW2ldLGo9cFtwaS0xXTsKICAgICAgICB3aGlsZShzW2kra109PXNbaitrXSkgaysrOwogICAgICAgIGxjcFtwaV09azsKICAgICAgICBrPW1heChrLTEsMCk7CiAgICB9CiAgICByZXR1cm4ge3AsbGNwfTsKfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kc3RydWN0IFNwYXJzZVRhYmxlewogICAgdmVjdG9yIDxUPiBkcFszMl07CiAgICBUIGNvbWJpbmUoY29uc3QgVCYgeCwgY29uc3QgVCYgeSl7CiAgICAgICAgcmV0dXJuIG1pbih4LHkpOwogICAgfQogICAgU3BhcnNlVGFibGUoY29uc3QgdmVjdG9yPFQ+ICZhcil7CiAgICAgICAgaW50IGksIGosIGwsIGgsIG4gPSAoaW50KWFyLnNpemUoKTsKICAgICAgICBkcFswXSA9IGFyOwogICAgICAgIGZvciAoaCA9IDEsIGwgPSAyOyBsIDw9IG47IGgrKywgbCA8PD0gMSl7CiAgICAgICAgICAgIGRwW2hdLnJlc2l6ZShuKTsKICAgICAgICAgICAgZm9yIChpID0gMCwgaiA9IGkgKyAobCAvIDIpOyAoaSArIGwpIDw9IG47IGkrKywgaisrKXsKICAgICAgICAgICAgICAgIGRwW2hdW2ldID0gY29tYmluZShkcFtoIC0gMV1baV0sIGRwW2ggLSAxXVtqXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBUIHF1ZXJ5KGludCBsLCBpbnQgcil7CiAgICAgICAgaW50IGggPSBfX2xnKHIgLSBsICsgMSk7CiAgICAgICAgYXV0byByZXMgPSBkcFtoXVtsXTsKICAgICAgICBmb3IgKGwgKz0gKDEgPDwgaCk7IGwgPD0gcjsgbCArPSAoMSA8PCBoKSl7CiAgICAgICAgICAgIGggPSBfX2xnKHIgLSBsICsgMSk7CiAgICAgICAgICAgIHJlcyA9IGNvbWJpbmUocmVzLCBkcFtoXVtsXSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXM7CiAgICB9Cn07CnNpZ25lZCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTtjaW4udGllKDApO2NvdXQudGllKDApOwogICAgaW50IHQ7Y2luPj50O3doaWxlKHQtLSkKICAgIHsKICAgICAgICBpbnQgbixtLHE7Y2luPj5uPj5tPj5xOwogICAgICAgIHN0cmluZyBhLGI7Y2luPj5hPj5iOwogICAgICAgIGE9YSsnJScrYjsKICAgICAgICBhdXRvW3N1ZixsY3BdPVN1ZmZpeEFycmF5X0xDUChhKTsKICAgICAgICB2ZWN0b3I8aW50PmYobSs1KTsKICAgICAgICBzdGFjazxpbnQ+c3Q7CiAgICAgICAgZm9yKGludCBpPTA7aTxzdWYuc2l6ZSgpO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKHN1ZltpXTw9bikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaW50IG1uPWxjcFtpXTsKICAgICAgICAgICAgICAgIHdoaWxlKHN0LnNpemUoKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBmW3N1ZltzdC50b3AoKV0tbi0xXT1tbjsKICAgICAgICAgICAgICAgICAgICBtbj1taW4obW4sbGNwW3N0LnRvcCgpXSk7CiAgICAgICAgICAgICAgICAgICAgc3QucG9wKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdC5wdXNoKGkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHN0YWNrPGludD5zdDI7CiAgICAgICAgZm9yKGludCBpPXN1Zi5zaXplKCktMTtpPj0wO2ktLSkKICAgICAgICB7CiAgICAgICAgICAgIGlmKHN1ZltpXT49bikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc3QyLnB1c2goaSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpbnQgbW49bittKzU7CiAgICAgICAgICAgICAgICB3aGlsZShzdDIuc2l6ZSgpKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG1uPW1pbihtbixsY3Bbc3QyLnRvcCgpXSk7CiAgICAgICAgICAgICAgICAgICAgZltzdWZbc3QyLnRvcCgpXS1uLTFdPW1heChtbixmW3N1ZltzdDIudG9wKCldLW4tMV0pOwogICAgICAgICAgICAgICAgICAgIHN0Mi5wb3AoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBTcGFyc2VUYWJsZTxpbnQ+c3AoZik7CiAgICAgICAgd2hpbGUocS0tKQogICAgICAgIHsKICAgICAgICAgICAgaW50IGwscjtjaW4+Pmw+PnI7CiAgICAgICAgICAgIC0tbCwtLXI7CiAgICAgICAgICAgIGludCBMPTEsUj1yLWwrMSxhbnM9MDsKICAgICAgICAgICAgd2hpbGUoTDw9UikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaW50IG1pZD1MK1I+PjE7CiAgICAgICAgICAgICAgICBpZihzcC5xdWVyeShsLHItbWlkKzEpPj1taWQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYW5zPW1pZDsKICAgICAgICAgICAgICAgICAgICBMPW1pZCsxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFI9bWlkLTE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY291dDw8YW5zPDwnXG4nOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9