#include <bits/stdc++.h>

using namespace std;

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

    int n;
    cin >> n;
    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>());

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

    while(pomeraj < 1000000)
    {
        if (demS.empty() && demJ.empty())
        {
            break;
        }

        if (!demS.empty() && demS[0]-pomeraj-pos <= 0)
        {
            break;
        }
        if (!demJ.empty() && demJ[0]+pomeraj-pos >= 0)
        {
            break;
        }

        long long distS=2000000000;
        if (!demS.empty())
        {
            distS=demS[0]-pomeraj-pos;
        }

        long long distJ=2000000000;
        if (!demJ.empty())
        {
            distJ=abs(demJ[0]+pomeraj-pos);
        }

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

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

    return 0;
}