#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define ll long long
#define ld long double
#define mp make_pair
const int N=2e5+50;
int n;
vector<int>a,b;
int Calc(vector<int>res){
    int ans=0;
    for(int t=0,i=0,j=0,x=0;t<res.size();t++){
        if(i<a.size()&&x-a[i]<=t){ans=-1;break;}
        if(j<b.size()&&b[j]-x<=t){ans=-1;break;}
        if(res[t]==1){
            if(j<b.size())ans++;
            j++;
        }
        if(res[t]==2){
            if(i<a.size())ans++;
            i++;
        }
        if(res[t]==3)x++;
    }
    return ans;
}
int main(){
    scanf("%i",&n);
    for(int i=1;i<=n;i++){
        int x;scanf("%i",&x);
        if(x>0)b.pb(x);
        else a.pb(x);
    }
    sort(a.begin(),a.end());reverse(a.begin(),a.end());
    sort(b.begin(),b.end());
    vector<int>ans;
    {
        vector<int>res;
        int t=0,i=0,j=0;
        for(;t<5*N;t++){
            if(i<a.size()&&-a[i]<=t)break;
            if(j<b.size()&&b[j]<=t)break;
            if(j==b.size())break;
            if(t%2==0) j++,res.pb(1);
            else i++,res.pb(2);
        }
        int t1=t;
        for(int x=0;t<5*N;t++){
            if(i<a.size()&&x-a[i]<=t)break;
            if(i==a.size())break;
            if(t1%2==t%2)i++,res.pb(2);
            else x++,res.pb(3);
        }
        if(Calc(res)>Calc(ans))ans=res;
    }
    {
        vector<int>res;
        int t=0,i=0,j=0;
        for(;t<5*N;t++){
            if(i<a.size()&&-a[i]<=t)break;
            if(j<b.size()&&b[j]<=t)break;
            if(j==b.size())break;
            if(t%2==1) j++,res.pb(1);
            else i++,res.pb(2);
        }
        int t1=t;
        for(int x=0;t<5*N;t++){
            if(i<a.size()&&x-a[i]<=t)break;
            if(i==a.size())break;
            if(t1%2==t%2)i++,res.pb(2);
            else x++,res.pb(3);
        }
        if(Calc(res)>Calc(ans))ans=res;
    }
    printf("%i\n",Calc(ans));
    for(auto i:ans)printf("%i",i);printf("\n");
    return 0;
}