#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
typedef long long ll;
int n,a[N],k;
bool vis[N];
char s[N];
priority_queue< pair<int,int>,vector< pair<int,int> >,greater< pair<int,int> > > q;
struct node{
int l,r;
}ans[N];
int rt[N];
int main(){
scanf("%d%s",&n,s+1);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
if(i>1&&s[i-1]!=s[i]){
q.push(make_pair(abs(a[i]-a[i-1]),i-1));
rt[i-1]=i;
}
}
while(q.size()){
int x=q.top().second;
q.pop();
int y=rt[x];
if(vis[x]||vis[y])continue;
vis[x]=vis[y]=1;
k++;
ans[k].l=x;ans[k].r=y;
if(x-1>=1&&y+1<=n&&s[x-1]!=s[y+1]){
q.push(make_pair(abs(a[x-1]-a[y+1]),x-1));
rt[x-1]=y+1;
}
}
cout<<k<<endl;
for(int i=1;i<=k;i++){
cout<<ans[i].l<<' '<<ans[i].r<<endl;
}
return 0;
}