Min-sol, a high school student who loves informatics, is unhappy that couples keep appearing around her. She asks Seung-won, who is very good at informatics, for help.
Seung-won models each student as a vertex. If student A likes student B, he represents it as a directed edge A -> B. For every student, the number of people who like that student and the number of people that student likes must differ by at most 1. In graph terms, every vertex v must satisfy the following condition.
|indegree(v) - outdegree(v)| <= 1
Seung-won knows every pair of students in the school who know each other. For any such pair A, B, he may make A like B, or instead make B like A. In other words, for every edge of the given undirected graph, you must choose one of its two directions.
Seung-won left after giving only the relationship data. Help Min-sol choose directions for all edges so that the condition holds.
The first line contains two space-separated integers N and M. N is the number of students, and M is the number of pairs of students who know each other.
1 <= N <= 1000, 1 <= M <= 100000
Each of the next M lines contains two space-separated integers A and B, meaning that student A and student B know each other.
No pair of students is given more than once.
If it is possible to direct every edge so that the condition holds, print Yes on the first line. Then print M lines, each containing two integers A and B, to describe a directed edge A -> B.
If there are multiple valid ways to direct the edges, you may print any one of them.
If no valid orientation exists, print No on the first line.
In one output for the public test, students 1, 2, and 4 have the same number of incoming and outgoing edges. Student 3 has one more outgoing edge than incoming edge, and student 5 has one more incoming edge than outgoing edge, so the condition is satisfied.