print846. Фрактальная раздробленность

printФрактальная раздробленность

Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Старгородский "Союз меча и орала", куда обратились за материальной помощью великий комбинатор и "гигант мысли, отец русской демократии и особа, приближенная к императору", имел довольно сложную структуру. Во-первых, союз делился на две неравные фракции (одна из которых придерживалась монархических взглядов, другая стояла за республику), но ни одна из фракций не превышала другую по численности в 2 или более раза. Во-вторых, каждая из фракций, в свою очередь, аналогичным образом делилась на две подфракции (например, сторонников абсолютной и конституционной монархии, парламентской и президентской республики). В-третьих, каждая из подфракций опять делилась на две фракции. И так далее `N` раз (должно получиться `2^N` субфракций нижнего уровня). Для каждой фракции (и всего союза), которая делится на подфракции, выполняется следующее условие: пусть `k` и `m`  – число членов в подфракциях данной фракции, тогда `k\ >\ 0`, `m\ >\ 0`, `k\ ≠\ m`, `2*k\ >\ m`, `2*m\ >\ k`. Требуется определить возможность разбиения союза численностью `L` на фракции `N` раз по указанным правилам.
Во входном файле содержится несколько строк (более одной), в каждой строке содержится два целых числа `L` (`1\ ≤\ L\ ≤\ 1\ 000\ 000`) и `N` (`1\ ≤\ N\ ≤\ 20`) через один пробел. Строка, в которой содержится только число 0, служит признаком завершения тестового файла.
В выходной файл для каждой строки с `L` и `N` из входного файла вывести строку с сообщением "YES", если возможно существование союза с численностью `L` и степенью раздробленностью `N`, и "NO", в противном случае.

Пример ввода

2 1
3 1
5 1
1000 3
0

Пример вывода

NO
NO
YES
YES
loading