Изменения рейтингов за последние раунды временно удалены. Скоро они будут возвращены. ×

E. Периодические числа
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Непустая строка s называется бинарной, если она состоит только из символов «0» и «1». Пронумеруем символы бинарной строки s от 1 до длины строки и обозначим i-й символ строки s как si.

Бинарную строку s длины n будем называть периодической, если существует целое число 1 ≤ k < n такое, что:

  • k — делитель числа n
  • для всех 1 ≤ i ≤ n - k выполняется si = si + k

Например, бинарные строки «101010» и «11» являются периодическими, а «10» и «10010» — нет.

Целое положительное число x будем называть периодическим, если бинарная строка, являющаяся записью числа x в двоичной системе счисления (без лидирующих нулей), — периодическая.

Ваша задача — найти количество периодических чисел в отрезке от l до r (оба конца включены).

Входные данные

В единственной строке входных данных записаны два целых числа l и r (1 ≤ l ≤ r ≤ 1018). Числа разделены пробелом.

Пожалуйста, не используйте спецификатор %lld для чтения или записи 64-битных чисел на С++. Рекомендуется использовать потоки cin, cout или спецификатор %I64d.

Выходные данные

Выведите единственное целое число — количество периодических чисел в отрезке от l до r (оба конца включены).

Примеры
Входные данные
1 10
Выходные данные
3
Входные данные
25 38
Выходные данные
2
Примечание

В первом примере периодическими числами являются 3, 7 и 10.

Во втором примере периодическими числами являются 31 и 36.