Олимпиадный тренинг

Задача . B. Два множества


У Little X есть n различных целых чисел: p1, p2, ..., pn. Он хочет так разделить все числа на два множества, A и B, чтобы выполнялись условия:

  • Если число x принадлежит множеству A, то число a - x также должно принадлежать множеству A.
  • Если число x принадлежит множеству B, то число b - x также должно принадлежать множеству B.

Помогите Little X разделить числа на два множества или определите, что это невозможно.

Входные данные

В первой строке записано три целых числа через пробел n, a, b (1 ≤ n ≤ 105; 1 ≤ a, b ≤ 109). В следующей строке записано n различных целых чисел через пробел p1, p2, ..., pn (1 ≤ pi ≤ 109).

Выходные данные

Если способ разделения чисел на два множества существует, то выведите "YES" в первой строке. Затем выведите n целых чисел: b1, b2, ..., bn (bi равняется либо 0, либо 1), описывающих разделение. Если bi равняется 0, то pi принадлежит множеству A, в противном случае оно принадлежит множеству B.

Если это невозможно, выведите "NO" (без кавычек).

Примечание

Допустимо следующее разбиение: все числа содержатся в одном множестве, а второе множество пустое.


Примеры
Входные данныеВыходные данные
1 4 5 9
2 3 4 5
YES
0 0 1 1
2 3 3 4
1 2 4
NO

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w644
Комментарий учителя