import java.util.*
fun main(){
	fun I()=readLine()!!.split(" ").map{it.toInt()}
	var (n,m)=I()
	val con=Array(n){mutableListOf<Int>()}
	val par=IntArray(n){-1}
	par[0]=0
	for(t in 1..m){
		val (a,b)=I()
		con[a-1].add(b-1)
		con[b-1].add(a-1)
	}
	val q=ArrayDeque<Int>()
	q.add(0)
	while(!q.isEmpty()){
		val cur=q.poll()
		for(nxt in con[cur]){
			if(par[nxt]<0){
				q.add(nxt)
				par[nxt]=cur
			}
		}
	}
	println("Yes")
	n--
	for(i in 1..n){println(par[i]+1)}
}