#include <iostream>
#include <math.h>
#include <vector>
#include <algorithm>
#include <string>


using namespace std;

int find(int *array,int l,int val,int pass){
  for(int i=0;i<l;i++){
    if(array[i]==val){
      if(i==pass)continue;
      else return i;
    }
  }
  return -1;

}
int main(){
  int n;
  cin>>n;
  n=n*2;
  string s;
  cin>>s;
  int type[n]={0};//1:in 2:out 3:middle 4:nouse
  int door[n]={0};
  int sec[n]={0};
  int sec_no=0;
  for(int i=0;i<n;i++){
    char a;
    if(i==0)a='1';
    else a=s[i-1];
    char b;
    if(i==n-1)b='1';
    else b=s[i];
    if(a=='1'){
      if(b=='1')type[i]=3;
      else {
        type[i]=2;
        sec_no++;
      }
    }
    else{
      if(b=='1'){
        type[i]=1;
        sec_no++;
      }
      else type[i]=4;
    }
    sec[i]=sec_no;
  }
  // for(int i=0;i<n;i++)cout<<type[i];
  // for(int i=0;i<n;i++)cout<<sec[i];
  // cout<<endl;
  int p=0;
  int dn=1;
  while(p<n){
    if(door[p]==0){
      if(type[p]==2){
        type[p]=0;
        door[p]=dn;
        p=find(type,n,1,0);
        if(p==-1)break;
        type[p]=0;
        door[p]=dn;
      }
      else if(type[p]==3){
        type[p]=0;
        door[p]=dn;
        // p=find(type,n,3,0);
        int temp=p;
        for(int i=0;i<n;i++){
          if(type[i]==3){
            if(sec[p]==sec[i])continue;
            else p=i;
          }
        }
        if(p==temp)break;
        type[p]=0;
        door[p]=dn;
      }
      else p=n-1;
      dn++;
    }
    else{
      // for(int i=0;i<n;i++)cout<<door[i];
      // cout<<endl<<dn<<endl;
      p=find(door,n,door[p],p);
      if(p==-1)break;
    }
    // cout<<p<<endl;
    p++;
  }
  int flipper=0;
  for(int i=0;i<n;i++){
    if(door[i]==0){
      if(type[i]==4)door[i]=dn;
      else{
        cout<<"No\n";
        return 0;
      }

    }
    if(flipper==1)dn++;
  }

  // for(int i=0;i<n;i++)cout<<type[i];
  // cout<<endl;
  cout<<"Yes\n";
  for(int i=0;i<n;i++)cout<<door[i];
  cout<<endl;

  return 0;
}
