#include <iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<map>
using namespace std;
#define ll long long
int f[100010];
char t[100010],p[100010];
int n,m;
void getfail()
{
f[0]=0;f[1]=0;
for(int i=1;i<m;i++)
{
int j=f[i];
while(j && p[i]!=p[j]) j=f[j];
f[i+1]=p[i]==p[j]? j+1 :0;
}
}
void Find(int k)
{
getfail();
int j=0,num=0;
for(int i=0;i<n;i++)
{
while(j && p[j]!=t[i]) j=f[j];
if(p[j]==t[i]) j++;
if(j==m)
{
num++;
if(num==k)
{
printf("%d\n",i-m+2);
return;
}
}
}
printf("-1\n");
}
int main()
{
int T,q;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&q);
scanf("%s",t);
int l,r,k;
for(int i=1;i<=q;i++)
{
scanf("%d%d%d",&l,&r,&k);
m=0;
for(int j=l-1;j<=r-1;j++)
p[m++]=t[j];
//printf("%s\n",p);
Find(k);
}
}
}