Problem:
Score : 600 points

Problem Statement

Given are integers L and R. Find the number, modulo 10^9 + 7, of pairs of integers (x, y) (L \leq x \leq y \leq R) such that the remainder when y is divided by x is equal to y \mbox{ XOR } x.

What is \mbox{ XOR }?

The XOR of integers A and B, A \mbox{ XOR } B, is defined as follows:

When A \mbox{ XOR } B is written in base two, the digit in the 2^k's place (k \geq 0) is 1 if either A or B, but not both, has 1 in the 2^k's place, and 0 otherwise.

For example, 3 \mbox{ XOR } 5 = 6. (In base two: 011 \mbox{ XOR } 101 = 110.)

Constraints

1 \leq L \leq R \leq 10^{18}

Input

Input is given from Standard Input in the following format:

L R

Output

Print the number of pairs of integers (x, y) (L \leq x \leq y \leq R) satisfying the condition, modulo 10^9 + 7.

Sample Input 1

2 3

Sample Output 1

3

Three pairs satisfy the condition: (2, 2), (2, 3), and (3, 3).

Sample Input 2

10 100

Sample Output 2

604

Sample Input 3

1 1000000000000000000

Sample Output 3

68038601

Be sure to compute the number modulo 10^9 + 7.

Solution in Ruby (2.3.3) (judge verdict: Accepted)

l,r = gets.split.map(&:to_i)
M = 10**9+7
ans, lb, rb = 0, l.bit_length-1, r.bit_length-1
(lb..rb).each{|i|
  d1,d2,d3,d4,lc,rc = 1,0,0,0,lb==i ? ~l : ~0,rb==i ? r : ~0
  (i-1).downto(0){|j|
    d4 = (d4 * 3 + rc[j] * d2 + lc[j] * d3) % M
    d2 = (d2 * 2 + lc[j] * d1) % M if rc[j] == 1
    d3 = (d3 * 2 + rc[j] * d1) % M if lc[j] == 1
    d1 &= lc[j] | rc[j]
  }
  ans += d1 + d2 + d3 + d4
}
p ans % M