Три кольори
Три - це магічне число у галузі комп'ютерних наук. Розглянемо, наприклад, проблему розфарбування вершин. Легко розв'язати задачу розфарбування вершин неорієнтовного графа двома кольорами так, щоб ніякі вершини одного кольору не були з'єднані ребром. Проте задача стає важкою, якщо дозволено використовувати три кольори. Хочете ще підтверджень? Легко розв'зати задачу 2-Виконуваність, але важко розв'язати 3-Виконуваність.
Хоча це і несправедливо, але тут ми розглянемо просту задачу з трьома кольорами, у той час як задача з двома кольорами набагато складніша.
Розглянемо розфарбування ребер неорієнтовного графа G за допомогою k кольорів з номерами {0, 1, ..., k-1}. Суму кольорів ребер, інцидентних вершині u, позначимо через s(u). Розфарбування будемо називати сусідньо розрізнимими, якщо для довільних двох вершин u та v, з'єднаних ребром, має місце s(u) ≠ s(v).
За заданим двудольним графом G необхідно знайти сусідньо розрізниме 3-розфарбування.
Вхідні дані
Перший рядок містить три цілих числа n_1, n_{2 }та m (1 ≤ n_1, n_2 ≤ 1500, 1 ≤ m ≤ 10000) - кількість вершин у кожній з частин графа та кількість ребер відповідно. Кожен з наступних m рядків описує ребро і містить два числа - номери вершин, які воно з'єднує. У кожній частині графа вершини незалежно пронумеровані починаючи з 1.
Вихідні дані
Якщо граф не має сусідньо розрізнимого 3-розфарбування, виведіть -1. Інакше виведіть m цілих чисел - кольори ребер у тому ж порядку, у якому вони поступають на вхід.