짝수 홀수 반복 횟수의 합

짝수는 2로 나누고 홀수는 1을 더해 1에 도달할 때까지 걸리는 단계 수를 f(X)라 할 때, [L, R] 구간 모든 X의 f(X) 합을 10^9+7로 나눈 나머지를 구한다. L과 R은 10^18까지 커질 수 있다.

어려움8수학비트 연산분할 정복동적 계획법아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

양의 정수 하나를 인자로 받아 정수를 돌려주는 함수 f(X)f(X)가 다음과 같이 정의되어 있다.

function f(X):
    iterations := 0
    while X is not 1:
        if X is even:
            divide X by 2
        else:
            add 1 to X
        add 1 to iterations
    return iterations

어떤 양의 정수 XX를 넣어도 이 함수는 반드시 끝난다는 사실을 증명할 수 있다. 구간 [L,R][L, R]이 주어지면 다음 합을 구하라.

S=f(L)+f(L+1)++f(R1)+f(R)S = f(L) + f(L + 1) + \cdots + f(R - 1) + f(R)

입력

첫째 줄에 두 정수 LLRR이 주어진다. (1LR10181 \le L \le R \le 10^{18})

출력

SS를 소수 109+710^9 + 7로 나눈 나머지를 출력한다.