using System;
using System.Collections.Generic;

namespace LazarSpasic
{
    class Program
    {
        static void Main(string[] args)
        {
            int N = int.Parse(Console.ReadLine());
            string potezi = "";
            string[] dementori = Console.ReadLine().Split();
            int prethodniPotez = 0;
            int Hari = 0;
            int uklonjeniDem = 0;

            Stack<int> neg = new Stack<int>();
            Queue<int> poz = new Queue<int>();

            for (int i = 0; i < N; i++)
            {
                int num = int.Parse(dementori[i]);
                if (num < 0) neg.Push(num);
                else poz.Enqueue(num);
            }

            for(int i = 0; i < N; i++)
            {
                neg.TryPeek(out int jug);
                poz.TryPeek(out int sever);
                jug += i;
                sever -= i;

                if (neg.Count == 0)
                {
                    for(int j = 0; j < poz.Count; j++)
                    {
                        if(prethodniPotez != 1)
                        {
                            potezi += "1";
                            uklonjeniDem++;
                            poz.Dequeue();
                            prethodniPotez = 1;
                        }
                        else if(prethodniPotez == 1 && sever - Hari > 2)
                        {
                            potezi += "3";
                            prethodniPotez = 3;
                        }
                    }
                    break;
                }

                if (poz.Count == 0)
                {
                    for (int j = 0; j < neg.Count; j++)
                    {
                        if (prethodniPotez != 2)
                        {
                            potezi += "2";
                            uklonjeniDem++;
                            poz.Dequeue();
                            prethodniPotez = 2;
                        }
                        else if (prethodniPotez == 2)
                        {
                            potezi += "3";
                            prethodniPotez = 3;
                        }
                    }
                    break;
                }

                if (jug == Hari || sever == Hari)
                {
                    Console.WriteLine(uklonjeniDem);
                    Console.WriteLine(potezi);
                    return;
                }

                if((prethodniPotez != 3 || prethodniPotez == 2) && sever - Hari > 2 && Hari - jug < 2)
                {
                    potezi += "3";
                    prethodniPotez = 3;
                }
                else if(Math.Abs(jug) <= Math.Abs(sever) && prethodniPotez != 2)
                {
                    neg.Pop();
                    potezi += "2";
                    uklonjeniDem++;
                    prethodniPotez = 2;
                }
                else if(Math.Abs(jug) <= Math.Abs(sever) && prethodniPotez == 2)
                {
                    poz.Dequeue();
                    potezi += "1";
                    uklonjeniDem++;
                    prethodniPotez = 1;
                }
                else if(Math.Abs(jug) >= Math.Abs(sever) && prethodniPotez != 1)
                {
                    poz.Dequeue();
                    potezi += "1";
                    uklonjeniDem++;
                    prethodniPotez = 1;
                }
                else
                {
                    neg.Pop();
                    potezi += "2";
                    uklonjeniDem++;
                    prethodniPotez = 2;
                }
            }
            Console.WriteLine(uklonjeniDem);
            Console.WriteLine(potezi);
        }
    }
}