Competitions

# DFS + Cycles + Cactus

# Find a cycle

The directed and unweighted graph is given. Determine, does it contain a cycle. If yes, then print any of them.

#### Input

The first line contains two positive integers **n** and **m** (**1** ≤ **n** ≤ `10`

, ^{5}**1** ≤ **m** ≤ `10`

) - the number of vertices and edges in graph respectively. In the next ^{5}**m** lines the edges are given. Each edge is described with a pair of numbers - the numbers of initial and final vertex respectively.

#### Output

If the graph does not contain the cycle, print "**NO**", otherwise print "**YES**" and then the list of vertices in the order of cycle traversal.

Input example #1

2 2 1 2 2 1

Output example #1

YES 1 2

Input example #2

6 7 1 2 1 5 2 3 2 4 4 6 6 5 5 2

Output example #2

YES 2 4 6 5