l, r = input().split(' ')
l = int(l)
r = int(r)
w1 = 0
w2 = 0
d = 1
cur = 0
q = 1
while cur + d < l:
if q == 1:
w1 += d
else:
w2 += d
cur += d
d = d * 2
q = 1 - q
arr = {{0, 0}, {0, 0}}
arr[0][0] = w2
arr[0][1] = w1
if cur + d <= r:
w = cur + d - l + 1
if q == 1:
w1 += d - w
else:
w2 += d - w
arr[0][0] = w2
arr[0][1] = w1
if q == 1:
w1 += w
else:
w2 += w
cur += d
d = d * 2
q = 1 - q
while cur + d <= r:
if q == 1:
w1 += d
else:
w2 += d
cur += d
d = d * 2
q = 1 - q
if cur != r:
if q == 1:
w1 += r - cur
else:
w2 += r - cur
else:
if q == 1:
w1 += l - cur - 1
else:
w2 += l - cur - 1
arr[0][0] = w2
arr[0][1] = w1
if q == 1:
w1 += r - l + 1
else:
w2 += r - l + 1
arr[1][0] = w2
arr[1][1] = w1
M = 1000000007
ans = (arr[1][0] % M * (arr[1][0] + 1) % M) % M
ans -= (arr[0][0] % M * (arr[0][0] + 1) % M) % M
ans += (arr[1][1] % M * (arr[1][1] + 1) % M) % M - arr[1][1]
ans = ans % M
ans -= ((arr[0][1] % M * (arr[0][1] + 1) % M) % M - arr[0][1])
ans = ans % M
print(ans)
bCwgciA9IGlucHV0KCkuc3BsaXQoJyAnKQpsID0gaW50KGwpCnIgPSBpbnQocikKCncxID0gMAp3MiA9IDAKZCA9IDEKY3VyID0gMApxID0gMQp3aGlsZSBjdXIgKyBkIDwgbDoKICAgIGlmIHEgPT0gMToKICAgICAgICB3MSArPSBkCiAgICBlbHNlOgogICAgICAgIHcyICs9IGQKICAgIGN1ciArPSBkCiAgICBkID0gZCAqIDIKICAgIHEgPSAxIC0gcQoKYXJyID0ge3swLCAwfSwgezAsIDB9fQphcnJbMF1bMF0gPSB3MgphcnJbMF1bMV0gPSB3MQoKaWYgY3VyICsgZCA8PSByOgogICAgdyA9IGN1ciArIGQgLSBsICsgMQogICAgaWYgcSA9PSAxOgogICAgICAgIHcxICs9IGQgLSB3CiAgICBlbHNlOgogICAgICAgIHcyICs9IGQgLSB3CiAgICBhcnJbMF1bMF0gPSB3MgogICAgYXJyWzBdWzFdID0gdzEKICAgIGlmIHEgPT0gMToKICAgICAgICB3MSArPSB3CiAgICBlbHNlOgogICAgICAgIHcyICs9IHcKICAgIGN1ciArPSBkCiAgICBkID0gZCAqIDIKCiAgICBxID0gMSAtIHEKICAgIHdoaWxlIGN1ciArIGQgPD0gcjoKICAgICAgICBpZiBxID09IDE6CiAgICAgICAgICAgIHcxICs9IGQKICAgICAgICBlbHNlOgogICAgICAgICAgICB3MiArPSBkCiAgICAgICAgY3VyICs9IGQKICAgICAgICBkID0gZCAqIDIKICAgICAgICBxID0gMSAtIHEKCiAgICAgICAgaWYgY3VyICE9IHI6CiAgICAgICAgICAgIGlmIHEgPT0gMToKICAgICAgICAgICAgICAgIHcxICs9IHIgLSBjdXIKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHcyICs9IHIgLSBjdXIKCgoKZWxzZToKICAgIGlmIHEgPT0gMToKICAgICAgICB3MSArPSBsIC0gY3VyIC0gMQogICAgZWxzZToKICAgICAgICB3MiArPSBsIC0gY3VyIC0gMQoKICAgIGFyclswXVswXSA9IHcyCiAgICBhcnJbMF1bMV0gPSB3MQoKICAgIGlmIHEgPT0gMToKICAgICAgICB3MSArPSByIC0gbCArIDEKICAgIGVsc2U6CiAgICAgICAgdzIgKz0gciAtIGwgKyAxCgphcnJbMV1bMF0gPSB3MgphcnJbMV1bMV0gPSB3MQoKTSA9IDEwMDAwMDAwMDcKCmFucyA9IChhcnJbMV1bMF0gJSBNICogKGFyclsxXVswXSArIDEpICUgTSkgJSBNCmFucyAtPSAoYXJyWzBdWzBdICUgTSAqIChhcnJbMF1bMF0gKyAxKSAlIE0pICUgTQoKYW5zICs9IChhcnJbMV1bMV0gJSBNICogKGFyclsxXVsxXSArIDEpICUgTSkgJSBNIC0gYXJyWzFdWzFdCmFucyA9IGFucyAlIE0KYW5zIC09ICgoYXJyWzBdWzFdICUgTSAqIChhcnJbMF1bMV0gKyAxKSAlIE0pICUgTSAtIGFyclswXVsxXSkKCmFucyA9IGFucyAlIE0KCnByaW50KGFucyk=