Хвильовий обхід графа
Нехай відстань від вершини u до вершини v визначається як мінімальна кількість ребер на шляху між u та v; таким чином, відстань між u та u дорівнює 0, а відстань між будь-якими двома різними сусідніми вершинами дорівнює 1.
Хвильовий обхід графа з вершини v - це послідовність вершин u_1, u_2, ..., u_r, яка задовольняє наступним умовам:
u_1 = v,
Кожна вершина графа, досяжна з v, з'являється в цій послідовності хоча б один раз,
Кожна наступна вершина в послідовності знаходиться на відстані від вершини v, яка не менша за відстань до попередньої вершини.
Вам дано зв'язний неорієнтований граф і його вершину v. Необхідно вивести будь-який хвильовий обхід цього графа.
Вхідні дані
У першому рядку вхідного файлу задано числа N, M і v через пробіл - кількість вершин і ребер у графі та початкова вершина обходу (1 ≤ N ≤ 100, 0 ≤ M ≤ 10000, 1 ≤ v ≤ N). Наступні M рядків містять по два числа u_i і v_i через пробіл (1 ≤ u_i, v_i ≤ N); кожен такий рядок означає, що в графі існує ребро між вершинами u_i і v_i.
Вихідні дані
У першому рядку вихідного файлу виведіть число r - кількість вершин у знайденому хвильовому обході (1 ≤ r ≤ 10000; гарантовано, що обхід, який задовольняє цим обмеженням, існує). У другому рядку виведіть самі числа u_1, u_2, ..., u_r через пробіл.