import java.util.*
fun main(args: Array<String>){
	val cin = Scanner(System.`in`)
    val n = cin.nextInt()
    val m = cin.nextInt()

    var a = Array<MutableList<Int>>(n, {mutableListOf<Int>()})

    for (i in 0..m-1) {
        val l = cin.nextInt()-1
        val r = cin.nextInt()-1
        a[l].add(r)
        a[r].add(l)
    }

    var record = a[0].size
    var recorder = 0
    for (i in 0..n-1) {
        if (a[i].size != 0 && (record == 0 || record > a[i].size)) {
            record = a[i].size
            recorder = i
        }
    }

    var now = recorder
    var ans = mutableListOf<Int>(now)
    var fin = 0
    val first_save = a[now].toMutableList()
    while (a[now].size != 0) {
        var next: Int
        while (true) {
            next = a[now].removeAt(0)
            if (a[next].size != 0) {
                break
            }
            if (a[now].size == 0) {
                fin = 1
                break
            }
        }
        if (fin == 1) {
            break
        }
        ans.add(next)
        a[now] = mutableListOf<Int>()
        now = next
    }
    
    now = recorder
    var ans2 = mutableListOf<Int>()
    fin = 0
    a[now] = first_save

    while (a[now].size != 0) {
        var next: Int
        while (true) {
            next = a[now].removeAt(0)
            if (next != recorder && a[next].size != 0) {
                break
            }
            if (a[now].size == 0) {
                fin = 1
                break
            }
        }
        if (fin == 1) {
            break
        }
        ans2.add(next)
        a[now] = mutableListOf<Int>()
        now = next
    }

    println(ans.size + ans2.size)
    for (i in 0..ans2.size-1) {
        print("%d ".format(ans2[ans2.size-i-1]+1))
    }
    for (i in 0..ans.size-1) {
        print("%d ".format(ans[i]+1))
    }
    println()
}