Три кольори#6676

Три кольори

4 секунди
256 мегабайтів
Дуже складна

Три — це магічне число в інформатиці. Наприклад, розглянемо задачу розфарбування вершин. Легко визначити, чи можна розфарбувати вершини неорієнтованого графа двома кольорами так, щоб жодні дві вершини одного кольору не були з'єднані ребром, але дуже важко це зробити, якщо дозволено використовувати три кольори. Бажаєте ще доказів? Легко розв'язати задачу 2-SAT, але важко 3-SAT.

Це здається несправедливим, тож у цій задачі ми розглянемо просту задачу з трьома кольорами, тоді як варіант із двома кольорами значно складніший.

Розглянемо розфарбування ребер неорієнтованого графа кольорами з \{0, 1, \ldots, k-1\}. Позначимо суму кольорів ребер, інцидентних вершині , як . Розфарбування називається сусідньо-розрізняючим, якщо для будь-якого ребра, що з'єднує вершини і , s(u) \ne s(v).

Задано двочастковий граф . Знайдіть його сусідньо-розрізняюче -розфарбування, якщо воно існує.

Вхідні дані

Перший рядок містить три цілі числа n_1, n_2 та (1 \le n_1, n_2 \le 1500, 1 \le m \le 10000) — кількість вершин у кожній частині та кількість ребер відповідно. Далі йдуть рядків з описом ребер: кожне ребро задається двома числами — номерами з'єднаних вершин. У кожній частині вершини нумеруються незалежно, починаючи з .

Вихідні дані

Якщо у даному графі немає сусідньо-розрізняючого -розфарбування, виведіть -1.

Інакше виведіть цілих чисел — кольори ребер у тому порядку, в якому вони подані у вхідних даних.

Приклади

Приклад 1

Loading
Loading