만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

욱제어

면접 대비

시간 제한1초메모리 제한512 MB

요약
주어진 단어 길이에 맞춰 0과 1로 된 단어를 만들고, 어떤 단어도 다른 단어의 접두사가 되지 않게 합니다. 만들 수 없으면 -1을 출력합니다.
난이도

보통10점 중 5점

유형
그리디, 정렬, 문자열
정답자
아직 제출이 없습니다

문제

욱제어는 욱제가 사용하는 언어이고, 알파벳으로 0과 1만 사용한다. 욱제어에는 NN개의 단어가 있고, 각 단어의 길이는 L1,L2,…,LNL_1, L_2, \ldots, L_N이다. 욱제어를 쓰는 사람들은 단어를 끝까지 말하지 않아도 서로 어떤 단어인지 알아듣는 경우가 많다. 한 단어가 다른 단어의 접두어(Prefix)가 되는 경우가 없기 때문이다.

동탄 주민 준오는 욱제어를 공부하고 싶어 욱제어 정보를 몰래 입수했다. 하지만 단어는 얻지 못하고 단어의 길이만 입수하는 데 성공했다. NN개의 단어 길이 L1,L2,…,LNL_1, L_2, \ldots, L_N이 주어졌을 때, 어떤 단어도 다른 단어의 접두어가 되지 않도록 단어를 만들 수 있는지 알아보자.

입력

첫째 줄에 단어의 개수 NN(1≤N≤1,0001 \le N \le 1{,}000)이 주어진다. 둘째 줄에는 L1,L2,…,LNL_1, L_2, \ldots, L_N이 주어진다. 단어 길이의 총합은 1,000 이하의 자연수이다.

출력

욱제어 단어를 NN개 만들 수 있으면 첫째 줄에 1을 출력한다. 둘째 줄부터 NN개의 줄에 욱제어 단어를 한 줄에 하나씩 출력한다. 단어는 입력된 순서를 따라야 한다. 즉, 길이가 L1L_1인 단어, 길이가 L2L_2인 단어, ..., 길이가 LNL_N인 단어를 차례로 출력해야 한다.

욱제어 단어를 NN개 만들 수 없으면 -1을 출력한다.

예제2

  1. 예제 1

    입력
    3
    1 2 3
    
    예상 출력
    1
    0
    10
    110
    
  2. 예제 2

    입력
    3
    1 1 1
    
    예상 출력
    -1