#include<bits/stdc++.h>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin>>n;
    vector<int> dementirani_ispred;
    vector<int> dementirani_iza;
    string rez = "";
    int dementirani = 0;
    while(n--){
        int unos;
        cin>>unos;
        if(unos>=0){
            dementirani_ispred.push_back(unos);
        }else{
            dementirani_iza.push_back(unos);
        }
    }
    sort(dementirani_ispred.begin(), dementirani_ispred.end());
    sort(dementirani_iza.begin(), dementirani_iza.end());//, bool a(int a, int b) {return a>b;});
    queue<int> ispred;
    queue<int> iza;
    for(int i = 0; i< dementirani_ispred.size(); i++){
        ispred.push(dementirani_ispred[i]);
    }
    for(int i = dementirani_iza.size()-1; i >= 0; i--){
        iza.push(dementirani_iza[i]);
    }
    /*for( auto i : ispred);

    }

    return 0;*/
    int hariGore = 0, hariDole = 0;
    int brPreostalihPoteza = 1000000;

    int poslPotez = 0;
    while(brPreostalihPoteza--){
        //proveriti da li su sustigli harija
        if ( (!ispred.size() && !iza.size()) || (ispred.size() && hariGore == ispred.front()) || (iza.size() && hariDole == iza.front())){
            break;
        }

        //niko nije ispred i iza harija
        if (!ispred.size() && !iza.size()){
            if (rez.size() == 0 || rez[rez.size()-1] == '3'){
                rez+= '2';
                poslPotez = 2;
            }else{
                rez+= '3';
                poslPotez = 3;
                hariGore++;
                hariDole++;
            }
        }
        // ima ispred harija ali nema iza
        else if(ispred.size() && !iza.size()){
            if(poslPotez != 1){
                poslPotez = 1;
                ispred.pop();
                dementirani++;
                rez+='1';
            }else{
                poslPotez = 2;
                rez+='2';
            }
        }
        //ima iza harija ali nema ispred
        else if(!ispred.size() && iza.size()){
            if(poslPotez != 2){
                poslPotez = 2;
                iza.pop();
                dementirani++;
                rez+='2';
            }else{
                poslPotez = 3;
                rez+='3';
                hariGore++;
                hariDole++;
            }
        }

        //ima oba
        else if(ispred.size() && iza.size()){
            //ima iza i ispred ali ispred je blizi
            if(abs(hariGore-(int)ispred.size()) < abs(hariDole-(int)iza.size())){
                if(poslPotez != 1){
                    poslPotez = 1;
                    ispred.pop();
                    dementirani++;
                    rez+='1';
                }else{
                    poslPotez = 2;
                    rez+='2';
                }

            }else{ //ima iza i ispred ali iza je blizi
                if(poslPotez != 2){
                    poslPotez = 2;
                    iza.pop();
                    dementirani++;
                    rez+='2';
                }else{
                    poslPotez = 1;
                    ispred.pop();
                    dementirani++;
                    rez+='1';
                }
            }
        }

        hariGore++;
        hariDole--;
    }
    cout<<dementirani<<"\n";
    cout<<rez;


    return 0;
}