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

int N;
int x_poz[300000];
int x_poz_n = 0;
int x_neg[300000];
int x_neg_n = 0;

int dementori_unisteni = 0;
uint8_t potezi[2000000];
int n_poteza = 0;
int update_counter_pos = 0;
int update_counter_neg = 0;

inline void napravi_potez(uint8_t p) {
    if(p == 1 && x_poz_n > 0) {
        dementori_unisteni++;
        x_poz_n--;
        if(x_poz_n > 0) {
            x_poz[x_poz_n - 1] -= update_counter_pos;
            update_counter_pos = 0;
        }
        update_counter_neg++;
    } else if(p == 2 && x_neg_n > 0) {
        dementori_unisteni++;
        x_neg_n--;
        if(x_neg_n > 0) {
            x_neg[x_neg_n - 1] -= update_counter_neg;
            update_counter_neg = 0;
        }
        update_counter_pos++;
    } else if(p == 3) {
        cout << "sta radis\n";
        exit(-1);
    } else {
        update_counter_pos++;
        update_counter_neg++;
    }
    potezi[n_poteza] = p;
    n_poteza++;
}

void uradi() {
    sort(x_poz, x_poz + x_poz_n, [](const int& a, const int& b) -> bool {
        return a > b;
    });
    sort(x_neg, x_neg + x_neg_n);

    /*for(int i = 0; i < x_poz_n; i++) {
        cout << x_poz[i] << " ";
    }
    cout << '\n';

    for(int i = 0; i < x_neg_n; i++) {
        cout << x_neg[i] << " ";
    }
    cout << '\n';*/

    // ode nas hari svakako
    if(x_neg[x_neg_n - 1] == -1 && x_poz[x_poz_n - 1] == 1) {
        napravi_potez(1);
        return;
    }

    bool prvi = true;
    if(x_neg[x_neg_n - 1] == -1) {
        prvi = false;
    }
    while(n_poteza < 1000000 && (x_poz_n > 0 || x_neg_n > 0)) { // ne sme iznad mil poteza
        if(prvi) {
            napravi_potez(1);
        } else {
            napravi_potez(2);
        }
        prvi = !prvi;
    }
}

int main() {
    ios::sync_with_stdio(false);

    cin >> N;
    for(int i = 0; i < N; i++) {
        int x;
        cin >> x;

        if(x > 0) {
            x_poz[x_poz_n] = x;
            x_poz_n++;
        } else if(x < 0) {
            x_neg[x_neg_n] = x;
            x_neg_n++;
        }
    }

    uradi();

    cout << dementori_unisteni << '\n';
    for(int i = 0; i < n_poteza; i++) {
        cout << (int)potezi[i];
    }
    cout << '\n';

    return 0;
}