Случайная прогулка
Армия Монетокидающих Обезьян (АМО) занимается производством случайных чисел. Хорошие случайные числа необходимы для множества приложений, таких как криптография, онлайн-азартные игры, рандомизированные алгоритмы и экстренные решения в последние минуты программных соревнований.
Недавно одна из лучших обезьян вышла на пенсию. Однако, прежде чем уйти, она изобрела новый, более экономичный способ генерации случайных чисел по сравнению с непосредственным использованием случайности, создаваемой монетокидающими обезьянами. Этот метод начинается с неориентированного графа, содержащего 2^n узлов, пронумерованных от 0 до 2^n - 1. Чтобы сгенерировать k случайных n-битных чисел, обезьяны подбрасывают n монет, чтобы определить начальный узел графа. Номер этого узла становится первым выходным числом. Затем обезьяны выбирают случайное ребро из этого узла и переходят к узлу, с которым это ребро соединено. Этот новый узел становится вторым случайным выходным числом. Далее они выбирают случайное ребро из текущего узла (возможно, возвращаясь к предыдущему узлу), следуют по нему и выводят номер узла, на который они попали. Этот процесс продолжается до тех пор, пока не будет выведено k чисел.
Во время экспериментов АМО заметила, что разные графы дают разные распределения выходных данных, некоторые из которых не очень случайны. Поэтому они попросили вас помочь протестировать графы, чтобы определить, достаточно ли хорошего качества случайность, чтобы её продавать.
Граф считается хорошим, если для каждого из n битов в каждом из k сгенерированных чисел вероятность того, что этот бит будет равен 1, больше 25% и меньше 75%.
Входные данные
Состоит из нескольких наборов данных. Каждый набор начинается с строки, содержащей три числа k, n, e, разделенных пробелами, где k — количество генерируемых n-битных чисел, а e — количество ребер в графе (1 ≤ k ≤ 100, 1 ≤ n ≤ 10 и 1 ≤ e ≤ 2000). Следующие e строк содержат по два целых числа, разделенных пробелом, v_1, v_2, где 0 ≤ v_1, v_2 < 2^n и v_1 ≠ v_2. Ребра неориентированные, и каждый узел гарантированно имеет хотя бы одно ребро. Между одной и той же парой узлов может быть несколько ребер.
Последний тестовый случай будет сопровождаться строкой с k = n = e = 0, который не должен обрабатываться.
Выходные данные
Для каждого входного случая выведите одну строку, содержащую слово Yes, если граф хороший, и No в противном случае.