#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
typedef long long ll;
const int N=2e5+5;
char r[N];
int v[N];
int a[N];
struct node{
int x,y,z;
bool operator < (const node b)const{
if(z==b.z)return x>b.x;
return z>b.z;
}
};
int main() {
int n;
priority_queue<node,vector<node> > p;
scanf("%d",&n);
scanf("%s",r+1);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<n;i++){
if(r[i]!=r[i+1]){
p.push({i,i+1,abs(a[i+1]-a[i])});
}
}
vector<pair<int,int>>res;
while(!p.empty()){
node t=p.top();
int x=t.x,y=t.y;
if(!v[x] && !v[y]){
res.push_back({x,y});
v[x]=v[y]=1;
while(x>0 && v[x])x--;
while(y<=n && v[y])y++;
if( x>0 && y<=n && r[x]!=r[y]){
p.push({x,y,abs(a[x]-a[y])});
}
}
p.pop();
}
printf("%d\n",res.size());
for(pii i:res)
printf("%d %d\n",i.first,i.second);
return 0;
}