#include<bits/stdc++.h>
using namespace std;
int n,d[100005],num[100005],ans[100005][5],t;
string s;
struct node{
int i,j,diff;
bool operator <(const node &b)const{
if(diff>b.diff) return true;
if(diff<b.diff) return false;
return i>b.i;
}
};
priority_queue<node> q;
int main(){
int l,r;
cin>>n>>s;
s='0'+s;
for(int i=1;i<=n;i++){
cin>>num[i];
}
for(int i=1;i<n;i++){
if(s[i]!=s[i+1]){
q.push({i,i+1,abs(num[i]-num[i+1])});
}
}
while(!q.empty()){
node c=q.top();
q.pop();
l=c.i;
r=c.j;
if(d[l]==1||d[r]==1){
continue;
}
ans[t][0]=l;ans[t][1]=r;
t++;
d[l]=1;
d[r]=1;
while(l>0&&d[l]==1){
l--;
}
if(l==0){
continue;
}
while(r<=n&&d[r]==1){
r++;
}
if(r>n){
continue;
}
if(s[l]==s[r]){
continue;
}
q.push({l,r,abs(num[l]-num[r])});
}
cout<<t<<endl;
for(int i=0;i<t;i++){
cout<<ans[i][0]<<' '<<ans[i][1]<<endl;
}
}