#include <bits/stdc++.h>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n;
    if(!(cin>>n)) return 0;

    deque<long long> demS, demJ;
    for(int i=0; i<n; i++) {
        long long x;
        cin>>x;
        if(x>0) demS.push_back(x);
        else demJ.push_back(x);
    }

    sort(demS.begin(), demS.end());
    sort(demJ.begin(), demJ.end(), greater<long long>());

    int prevMove=-1;
    long long pos=0;
    long long pomeraj=0;
    int res=0;
    string ans="";

    while(pomeraj<1000000)
    {
        if(!demS.empty() && (demS.front()-pomeraj-pos<=0))break;
        if(!demJ.empty() && (demJ.front()+pomeraj-pos>=0))break;

        int move=-1;
        long long distS=LONG_MAX,distJ=LONG_MAX;

        if(!demS.empty())
            distS=demS.front()-pomeraj-pos;



        if(!demJ.empty())
            distJ=abs(demJ.front()+pomeraj-pos);


        if(distS<=distJ)
        {
            if(prevMove!=1 && !demS.empty())
                move=1;
            else if(prevMove!=2 && !demJ.empty())
                move=2;
            else if(prevMove!=3)
                move=3;
            else if(prevMove!=1)
                move=1;
            else
                move=2;
        }
        else
        {
            if(prevMove!=2 && !demJ.empty())
                move=2;
            else if(prevMove!=1 && !demS.empty())
                move=1;
            else if(prevMove!=3)
                move=3;
            else if(prevMove!=2)
                move=2;
            else
                move=1;
        }

        if(move==1)
        {
            if(!demS.empty())
            {
                demS.pop_front();
                res++;
            }
            ans+='1';
        }
        else if(move==2)
        {
            if(!demJ.empty())
            {
                demJ.pop_front();
                res++;
            }
            ans+='2';
        }
        else if(move==3)
        {
            if(!demS.empty() && (demS.front()-pomeraj-(pos+1)<=0))
            {
                if(prevMove!=1)
                {
                    if(!demS.empty())
                    {
                        demS.pop_front();
                        res++;
                    }
                    move=1;
                    ans+='1';
                }
                else
                {
                    if(!demJ.empty())
                    {
                        demJ.pop_front();
                        res++;
                    }
                    move=2;
                    ans+='2';
                }
            }
            else
            {
                pos++;
                ans+='3';
            }
        }

        prevMove=move;
        pomeraj++;

        if(demS.empty() && demJ.empty())break;
    }

    cout<<res<<endl<<ans<<endl;

    return 0;
}