#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,q,a[1000010],sum[1000010],l,r,now,first1,last1,ans,ou,ji;
map<int,pair<int,int> >ma;
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>q;
for(int i=1;i<=n;i++)
{
char ch;
cin>>ch;
if(ch=='T') a[i]=2;
else a[i]=1,last1=i;
if(!first1&&a[i]==1) first1=i;
sum[i]=sum[i-1]+a[i];
}
//cout<<first1<<' '<<last1<<endl;
if(sum[n]%2==0)
{
ou=sum[n];
ji=max(sum[n]-sum[first1],sum[last1-1]);
//cout<<sum[n]-sum[first1]<<' '<<sum[last1-1]<<endl;
ma[ou]={1,n};
if(n-first1>last1-1) ma[ji]={first1+1,n};
else ma[ji]={1,last1-1};
}
else
{
ji=sum[n];
ou=max(sum[n]-sum[first1],sum[last1-1]);
ma[ji]={1,n};
if(n-first1>last1-1) ma[ou]={first1+1,n};
else ma[ou]={1,last1-1};
}
//cout<<ou<<' '<<ji<<endl;
//oushu
l=ma[ou].first;
r=ma[ou].second;
now=ou;
while(l<=r&&now>=3)
{
now-=2;
if(a[l]==1&&a[r]==1)
{
l++;
r--;
ma[now]={l,r};
}
else if(a[l]==1&&a[r]==2)
{
r--;
ma[now]={l,r};
}
else
{
l++;
ma[now]={l,r};
}
}
//jishu
l=ma[ji].first;
r=ma[ji].second;
now=ji;
while(l<=r&&now>=3)
{
now-=2;
if(a[l]==1&&a[r]==1)
{
l++;
r--;
ma[now]={l,r};
}
else if(a[l]==1&&a[r]==2)
{
r--;
ma[now]={l,r};
}
else
{
l++;
ma[now]={l,r};
}
}
while(q--)
{
int k;
cin>>k;
if(ma[k].first==0&&ma[k].second==0) cout<<"NIE\n";
else cout<<ma[k].first<<' '<<ma[k].second<<endl;
}
return 0;
}
TLE on17,30-41
不知道为什么TLE