eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Камені

Камені

У Васі є декілька плоских каменів. Кожен камінь білий з однієї сторони і чорний з іншої. Він розклав їх у ряд чорною стороною донизу. Вася догадливий і помітив, що картинка перед ним - насправді двійкове число. Картина переводиться у двійкове число наступним чином. Камінь, який лежить білою стороною догори вважається нулем, чорною - одиницею. Перший камінь береться з коефіцієнтом \textbf{1}, другий - \textbf{2}, третій - \textbf{4}, і т.д. Тепер він задумав число \textbf{n} і хоче отримати його. Проте, єдине, що він може робити - це перевернути якийсь відрізок каменів ненульової довжини. При перевороті відрізку усі камені на ньому перевертаються з чорної сторони на білу, з білої - на чорну. Проте, навіть відрізки він може перевертати не усі. Він помітив, що відрізок, що перевертається, насправді також двійкове число. Він може перевертати лише ті відрізки каменів, для яких число, що їм відповідає, не перевищує \textbf{k}. Також, Вася не хоче повторюватись, і усі відрізеи, що перевертаються, повинні бути різні. Цого зацікавила кількість способів досягти своєї мети, а саме, отримати картину, яка відповідає числу \textbf{n}. Так як така кількість може бути великою, виведіть її остачу від ділення на \textbf{10^9 + 7}. \InputFile У першому рядку вхідного файлу через пропуск задано числа \textbf{n} (\textbf{1} ≤ \textbf{n} ≤ \textbf{10^18}) і \textbf{k} (\textbf{1} ≤ \textbf{k} ≤ \textbf{10^18}). \OutputFile Виведіть потрібну кількість способів по модулю \textbf{10^9 + 7}.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
3 4
Вихідні дані #1
2
Автор Н.Нігматуллін, А.Комаров
Джерело Четвертая олимпиада, Базовый уровень. 12 ноября 2011 года.