There is a cave.  The cave has N rooms and M passages. The rooms are numbered 1 to N, and the passages are numbered 1 to M. Passage i connects Room A_i and Room B_i bidirectionally. One can travel between any two rooms by traversing passages. Room 1 is a special room with an entrance from the outside.  It is dark in the cave, so we have decided to place a signpost in each room except Room 1. The signpost in each room will point to one of the rooms directly connected to that room with a passage.  Since it is dangerous in the cave, our objective is to satisfy the condition below for each room except Room 1.    * If you start in that room and repeatedly move to the room indicated by the signpost in the room you are in, you will reach Room 1 after traversing the minimum number of passages possible.  Determine whether there is a way to place signposts satisfying our objective, and print one such way if it exists.
from collections import deque

n,m=map(int,input().split())

INF=100050

q=deque()

class Room:
    def __init__(self,num):
        self.number=num
        self.frontier=True
        self.neighbor=[]
        self.arrow=0
        self.deepness=INF

    def set(self,room):
        self.neighbor.append(room)
    
    def search(self,num,deps):
        self.arrow=num
        self.deepness=deps
        self.frontier=False

    def dfs(self):
        for i in self.neighbor:
            if rooms[i].frontier:
                rooms[i].search(self.number,self.deepness+1)
                q.append(i)

rooms=[]
for i in range(n+1):
    rooms.append(Room(i))

for _ in range(m):
    a,b=map(int,input().split())
    rooms[a].set(b)
    rooms[b].set(a)

q.append(1)
while q:
    rooms[q.popleft()].dfs()

for i in range(2,len(rooms)):
    if rooms[i].frontier==False:
        print(rooms[i].arrow)

from collections import deque

n,m=map(int,input().split())

INF=100050

q=deque()

class Room:
    def __init__(self,num):
        self.number=num
        self.frontier=True
        self.neighbor=[]
        self.arrow=0
        self.deepness=INF

    def set(self,room):
        self.neighbor.append(room)
    
    def search(self,num,deps):
        self.arrow=num
        self.deepness=deps
        self.frontier=False

    def dfs(self):
        for i in self.neighbor:
            if rooms[i].frontier:
                rooms[i].search(self.number,self.deepness+1)
                q.append(i)

rooms=[]
for i in range(n+1):
    rooms.append(Room(i))

for _ in range(m):
    a,b=map(int,input().split())
    rooms[a].set(b)
    rooms[b].set(a)

q.append(1)
while q:
    rooms[q.popleft()].dfs()


print("Yes")
for i in range(2,len(rooms)):
    if rooms[i].frontier==False:
        print(rooms[i].arrow)
