#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;
const int N=200001;
int a[N],n,sum;
string k;
bool v[N];
pair<int,int> ans[N];
priority_queue<pair<int,pair<int,int> >,vector<pair<int,pair<int,int> > >,greater<pair<int,pair<int,int> > > > s;
int main()
{
cin>>n>>k;
memset(v,false,sizeof(v));
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=1;i<n;i++)
{
if(k[i]!=k[i-1])
{
s.push(make_pair(abs(a[i]-a[i-1]),make_pair(i-1,i)));
}
}
while(!s.empty())
{
int l=s.top().second.first,r=s.top().second.second;
s.pop();
if(!v[l]&&!v[r])
{
v[l]=v[r]=true;
ans[sum++]=make_pair(l,r);
while(l>=0&&v[l])
{
l--;
}
while(r<n&&v[r])
{
r++;
}
if(l>=0&&r<n&&k[l]!=k[r])
{
s.push(make_pair(abs(a[l]-a[r]),make_pair(l,r)));
}
}
}
cout<<sum<<endl;
for(int i=0;i<sum;i++)
{
cout<<ans[i].first+1<<" "<<ans[i].second+1<<endl;
}
return 0;
}