Гаджеты на дереве

아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

Вася недавно придумал новое развлечение. Пусть дан связный ориентированный граф, состоящий из nn вершин и 2(n1)2 \cdot (n - 1) рёбер, причём для каждого ребра (u,v)(u, v), существует ребро (v,u)(v, u). Иначе говоря, граф был получен из дерева, в котором каждое ребро было расщеплено на два противоположных ребра, ориентированных в разные стороны.

Назовем гаджетом такую пару рёбер (e_1,e_2)(e\_1, e\_2), что конец e_1e\_1 совпадает с началом e_2e\_2 или наоборот (в частности, два противоположных друг другу ребра --- гаджет). Вася развлекается тем, что разбивает рёбра графа на непересекающиеся гаджеты. Конечно, ему легко удалось это сделать с  исходным графом.

Васин друг Петя удалил из дерева 2k2 \cdot k ориентированных рёбер. Таким образом, в графе осталось m=2(n1)2km = 2 \cdot (n - 1) - 2 \cdot k ориентированных ребер. 

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

Рис. 1: Разбиение на гаджеты в первом примере

입력

В первой строке даны два целых числа nn и mm (2n150,0002 \le n \le 150\\,000, 2m2n22 \le m \le 2n-2) --- число вершин и число оставшихся рёбер. Гарантируется, что число mm чётное. 

В следующих mm строках даны по два числа u_i,v_iu\_i, v\_i (1u_i,v_in1 \le u\_i, v\_i \le n) --- начала и концы оставшихся рёбер.

출력

Если разбить рёбра на гаджеты нельзя, выведите <<No>>. 

В противном случае выведите <<Yes>>, а затем выведите m2\frac{m}{2} строк по 4 числа в каждой --- пары рёбер в каждом из гаджетов. Каждое ребро описывается двумя числами: своим началом и концом.

힌트

Разбиение на гаджеты в первом примере изображено на рисунке в условии.

Обратите внимание, что в этой задаче размер входных данных может быть большим. Рекомендуем ознакомиться с разделом <<Скорость ввода и выбор ОС>> в памятке участника.