아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Выборы президента

시간 제한2초메모리 제한1024 MB

요약
n명의 정치인이 받은 득표수가 주어질 때, 모든 유권자가 반대 정당 후보에게 투표하도록 각자를 두 정당 중 하나로 배정하거나 불가능함을 판별한다.
난이도

보통10점 중 7점

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

문제

Мистер Скрудж --- председатель местного парламента. На повестке дня в парламенте выбор президента. Конечно, президентом нужно выбрать одного из парламентариев. В парламенте есть две фракции --- Даки и Маусы. Членам обеих партий запрещено голосовать за политиков, которые состоят в той же партии, что и голосующий. Председатель парламента, то есть, Скрудж, не имеет права голоса, и не может быть избран президентом.

В процессе выборов каждый из парламентариев проголосовал ровно за одного парламентария, состоящего в другой партии. После этого список, в котором указано, сколько голосов получил каждый из политиков, был передан Скруджу.

Получив список, Скрудж понял, что он не знает, в какой партии состоит какой кандидат, а это важно. Помогите ему составить какое-либо распределение политиков по партиям, удовлетворяющее всем условиям, или выясните, что список, который получил Скрудж, некорректен.

입력

В первой строке входного файла дано целое число nn (2≤n≤100,0002 \le n \le 100\\,000) --- число парламентариев.

В следующей строке дано nn целых чисел a_ia\_i (0≤a_i<n0 \le a\_i < n, сумма всех a_ia\_i равна nn) --- число голосов, которые получил ii-й парламентарий.

출력

В первой строке выходного файла выведите <<YES>>, если можно таким образом назначить каждому парламентарию его партию, и выбрать, за кого он проголосовал, чтобы список, полученный Скруджем, оказался корректен, и <<NO>> в противном случае.

Если искомое назначение существует, то во второй строке выведите nn целых чисел --- 1, если ii-й политик состоит в партии Даков, или 2, если он состоит в партии Маусов.

예제1

  1. 예제 1

    입력
    5
    1 2 0 2 0
    
    예상 출력
    YES
    1 1 2 2 2