Три цвета
시간 제한4초메모리 제한1024 MB
이분 그래프의 각 간선을 0, 1, 2 색으로 칠해 인접한 두 정점의 간선 색 합이 다르도록 만들고, 불가능하면 -1을 출력한다.
문제
Число три в информатике играет ключевую роль. Часто некоторые задачи легко решаются, если некоторый параметр в задаче равен двум или одному, но становятся сложными, если этот параметр равен трем. Например, задача о раскраске графа в два цвета --- это проверка на двудольность, а раскраска в три цвета --- трудная задача.
Мы решили, что это нечестно и придумали задачу, которая легко решается для трех цветов, но гораздо труднее для двух.
Рассмотрим двудольный граф , разрешим раскрашивать его ребра в три цвета: 0, 1 и 2. Будем обозначать сумму цветов ребер, один из концов которых равен , как . Будем называть такую раскраску различающей соседей, если для любых двух вершин и , соединенных ребром, выполнено неравенство .
По заданному двудольному графу найдите его раскраску в три цвета, различающую соседей.
입력
Первая строка входного файла содержит три целых числа , и --- количество вершин в каждой из долей и количество ребер в графе, соответственно (, ).
Следующие строк описывают ребра, каждое ребро описывается двумя целыми числами --- номерами вершин, которые оно соединяет. Вершины в каждой доле независимо нумеруются, начиная с единицы.
출력
Если решения не существует, выведите <<>>.
Иначе выведите целых чисел --- цвета ребер. Выводите цвета ребер в порядке, в котором ребра заданы во входном файле.