Камни
시간 제한2초메모리 제한1024 MB
값이 k 이하인 서로 다른 구간을 뒤집는 과정으로 모두 흰색인 줄을 n의 이진 표현으로 만드는 방법의 수를 1e9+7로 나눈 나머지를 구한다.
문제
У Васи есть несколько плоских камней. Каждый камень белый с одной стороны и чёрный с другой. Он разложил их в ряд чёрной стороной вниз. Вася догадливый и заметил, что картинка перед ним --- на самом деле двоичное число. Картина переводится в двоичное число следующим образом. Камень, лежащий белой стороной вверх считается нулём, чёрной --- единицей. Первый камень берётся с коэффициентом 1, второй --- 2, третий --- 4, и т.д.
Теперь он задумал число и хочет получить его. Однако, единственное, что он может делать --- это перевернуть какой-то отрезок камней ненулевой длины. При перевороте отрезка все камни на нём переворачиваются с чёрной стороны на белую, с белой --- на чёрную. Однако, даже отрезки он может переворачивать не все. Он заметил, что переворачиваемый отрезок на самом деле тоже двоичное число. Он может переворачивать только те отрезки камней, соответствующее которым число не превышает .
Также, Вася не хочет повторяться, и все переворачиваемые им отрезки должны быть различны. Его заинтересовало количество способов добиться своей цели, а именно, получить картину, соответствующую числу . Так как такое количество может быть большим, выведите его остаток от деления на .
입력
В первой строке входного файла через пробел заданы числа () и ().
출력
Выведите требуемое количество способов по модулю .