#include <bits/stdc++.h>

using namespace std;

bool ok(vector<int>&a, int mid, vector<int> &b){
    int indeksPoz = -1;
    int indeksNeg = -1;
    int najbliziPozitivan = -1000000001;
    int najbliziNegativan = -1000000001;
    if(a[0] < 0){
        indeksPoz = 0;
        int najbliziNegativan = a[0];
    }
    if(a[a.size()-1]>=0){
        indeksNeg = a.size();
        int najbliziPozitivan = a[a.size()-1];
    }
    for(int i=0;i<a.size();i++){
        if(najbliziNegativan > a[i] && a[i] < 0){
            najbliziNegativan = a[i];
            indeksPoz = i;
        }
        if(najbliziPozitivan < a[i] && a[i] > 0){
            najbliziPozitivan = a[i];
            indeksNeg = i;
        }
    }

    int razlika = min(najbliziPozitivan,0 - najbliziNegativan);

    if(najbliziPozitivan == -1000000001 || najbliziNegativan == -1000000001){
        if(najbliziNegativan == -1000000001){
            int razlika = najbliziPozitivan;
        }else{
            int razlika = najbliziNegativan;
        }
    }
    int br = 0;
    int brp = 0;
    int brn = 0;
    int bru = 0;
    while(br<1000000 && razlika > 0){
        if(najbliziNegativan == -1 && b[br-1]!=2){
            b[br] = 2;
            br++;
            indeksNeg -=1;
            najbliziNegativan = a[indeksNeg] + br;
            najbliziPozitivan = a[indeksPoz] - br;
            razlika = min(abs(najbliziNegativan),najbliziPozitivan);
            continue;
        }else if(najbliziNegativan==-1 && b[br-1] ==2){
            b[br] = 3;
            br++;
            najbliziNegativan = a[indeksNeg] + br;
            najbliziPozitivan = a[indeksPoz] - br;
            razlika = min(abs(najbliziNegativan),najbliziPozitivan);
            continue;
        }
        if(razlika == abs(najbliziNegativan) && najbliziPozitivan != abs(najbliziNegativan)&& b[br-1]!=2){
            b[br] = 2;
            br++;
            indeksNeg -=1;
            najbliziNegativan = a[indeksNeg] + br;
            najbliziPozitivan = a[indeksPoz] - br;
            razlika = min(abs(najbliziNegativan),najbliziPozitivan);
            continue;
        }else if(razlika == najbliziPozitivan && najbliziPozitivan!=abs(najbliziNegativan) && b[br-1]!=1){
            b[br] = 1;
            br++;
            indeksPoz +=1;
            najbliziNegativan = a[indeksNeg] + br;
            najbliziPozitivan = a[indeksPoz] - br;
            razlika = min(abs(najbliziNegativan),najbliziPozitivan);
            continue;
        }else if(abs(najbliziNegativan) == najbliziPozitivan && b[br-1]!=1){
            b[br] == 1;
            br++;
            indeksPoz +=1;
            najbliziNegativan = a[indeksNeg] + br;
            najbliziPozitivan = a[indeksPoz] - br;
            razlika = min(abs(najbliziNegativan),najbliziPozitivan);
            continue;
        }

    for(int i=0;i<br;i++){
        if(b[i]==1 || b[i]==2){
            bru++;
        }
    }
}
if(bru>=mid){
        return true;
    }
    return false;
}


int pretraga(vector<int>&a, vector<int> &b){
    int l=1;
    int r=200000;
    while(l<=r){
        int mid = l + (r-l)/2;
        if(ok(a,mid,b)==true){
            l = mid+1;
        }else{
            r = mid-1;
        }
    }
    return r;
}

int main()
{
    int n;

    cin >> n;

    vector<int> a(n);
    vector<int> b(n);

    for(int i=0;i<n;i++){
        cin >> a[i];
    }

    sort(a.begin(),a.end());

    int r = pretraga(a,b);

    cout << r;
    cout << "\n";

    for(int i=0;i<b.size();i++){
        if(b[i]!=0){
         cout << b[i];
        }
    }

    return 0;
}