만드는 중입니다

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

카드 색칠

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

요약
일부 색이 정해진 카드 행에서 0인 카드에 빨강, 초록, 파랑 중 하나를 칠해 이웃한 카드의 색이 다르게 만들거나, 불가능하면 -1을 출력합니다.
난이도

보통10점 중 4점

유형
구현, 그리디
정답자
아직 제출이 없습니다

문제

영우는 나코더 신입생들을 환영하려고 입부 환영 카드를 정성껏 만들었다. 부기장 이환이는 이 카드들을 색칠하기로 했다. 카드는 일렬로 놓여 있고, 각 카드는 빨간색, 초록색, 파란색 중 하나로 칠해야 한다. 카드 몇 장은 영우가 이미 색칠해 두었다.

색칠은 다음 규칙을 따라야 한다.

  • 인접한 카드는 서로 다른 색으로 칠해야 한다.
  • 이미 색칠된 카드는 다시 칠할 수 없다.
  • 카드의 순서는 바꿀 수 없다.

입력

첫째 줄에 카드의 개수 NN이 주어진다.

둘째 줄에는 NN개의 정수가 공백으로 구분되어 주어진다. ii번째 정수 aia_i는 ii번째 카드의 색을 나타낸다. 1, 2, 3은 각각 빨간색, 초록색, 파란색을 뜻하고, 0은 ii번째 카드가 아직 색칠되지 않았음을 뜻한다.

출력

한 줄에 NN개의 정수를 공백으로 구분하여 출력한다. 각 정수는 1, 2, 3 중 하나이며, 위의 규칙을 만족해야 한다. 가능한 방법이 여러 가지라면 그중 아무것이나 출력한다. 모든 조건을 만족하는 색칠이 불가능하면 -1을 출력한다.

제한

  • 1≤N≤1,000,0001 \le N \le 1{,}000{,}000
  • 0≤ai≤30 \le a_i \le 3
  • 주어지는 모든 수는 정수이다.

예제3

  1. 예제 1

    입력
    5
    1 0 2 0 3
    
    예상 출력
    1 3 2 1 3
    
  2. 예제 2

    입력
    6
    0 0 0 0 0 0
    
    예상 출력
    1 2 1 2 1 2
    
  3. 예제 3

    입력
    2
    1 1
    
    예상 출력
    -1