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

int main() {
    int nesto;
    cin >> nesto;

    int broj = nesto;

    vector <int> lista;

    for (int x=0; x < broj; x++) {
        int ulaz;
        cin >> ulaz;
        lista.push_back(ulaz);
    }

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


    int counter = 0;
    int prethodni = 0;
    int pozicija = 0;
    int pomeraj = 0;
    int sever = 0;
    int jug = 0;

    string koraci = "";

    while (counter < 1000000) {
        auto it = upper_bound(lista.begin(), lista.end(), pozicija);
        int indeks = it - lista.begin();
        int najblizi = abs(abs(lista[indeks-1]) - pomeraj - pozicija);
        int najdalji = abs(abs(lista[indeks]) - pomeraj - pozicija);

        cout << "najblizi: " << najblizi << " najdalji; " << najdalji << "\n";

        if (najblizi == 1 && najdalji == 1) {
            if (prethodni == 1) {
                broj -= 1;
                koraci += "2";
                break;
            }
            else {
                broj -= 1;
                koraci += "1";
                break;
            }
        }

        if (indeks >= nesto - 1) {
            if (lista[indeks - 1] == 0) {
                sever = 1;
            }
        }

        if (lista[0] == 0) {
            jug = 1;
        }

        if (sever == 0) {

            if (najdalji == 0) {
                break;
            }
        }

        if (jug != 1) {
            if (najblizi == 0) {
                break;
            }
        }

        if (broj == 0) {
            break;
        }

        if (sever == 1) {
            if (prethodni == 2) {
                prethodni = 3;
                koraci += "3";
                pozicija += 1;
            }

            else {
                prethodni = 2;
                koraci += "2";
                lista.erase(lista.begin() + indeks - 1);
                broj -= 1;
            }
        }

        else if (jug == 1) {
            if (prethodni == 1) {
                pozicija += 1;
                prethodni = 3;
                koraci += "3";
            }

            else {
                prethodni = 1;
                lista.erase(lista.begin() + indeks);
                broj -= 1;
                koraci += "1";
            }
        }

        else {

            if (najblizi < najdalji) {
                if (prethodni != 2) {
                    lista.erase(lista.begin() + indeks - 1);
                    prethodni = 2;
                    broj -= 1;
                    koraci += "2";
                }

                else {
                    if (najblizi == 1) {
                        if (najdalji == 1) {
                            prethodni = 1;
                            broj -= 1;
                            koraci += "1";
                            lista.erase(lista.begin() + indeks);
                        }

                        else{
                            prethodni = 3;
                            pozicija += 1;
                            koraci += "3";
                        }

                    }

                    else {
                        lista.erase(lista.begin() + indeks);
                        broj -= 1;
                        prethodni = 1;
                        koraci += "1";
                    }
                }
            }

            else {
                if (prethodni != 1) {
                    lista.erase(lista.begin() + indeks);
                    broj -= 1;
                    prethodni = 1;
                    koraci += "1";
                }

                else {
                    prethodni = 2;
                    lista.erase(lista.begin() + indeks - 1);
                    broj -= 1;
                    koraci += "2";
                }
            }



            counter += 1;
            pomeraj += 1;
        }
    }

    cout << nesto - broj << "\n";
    cout << koraci << "\n";

    return 0;
}