l = input()
m = 10**9+7
ans = 0
c = 1
while len(l) > 1:
  ans = (ans+c*pow(3,len(l)-1,m))%m
  j = 1
  while l[j] == '0':
    j += 1
    if j == len(l):
      j -= 1
      break
  l = l[j:]
  c = (2*c)%m
ans = (ans+(2*int(l)+1)*c)%m
print(ans) l = input() l input() input m = 10**9+7 m 10**9+7 10**9 10 9 7 ans = 0 ans 0 c = 1 c 1 while len(l) > 1:
  ans = (ans+c*pow(3,len(l)-1,m))%m
  j = 1
  while l[j] == '0':
    j += 1
    if j == len(l):
      j -= 1
      break
  l = l[j:]
  c = (2*c)%m len(l) > 1 len(l) len l 1 ans = (ans+c*pow(3,len(l)-1,m))%m ans (ans+c*pow(3,len(l)-1,m))%m ans+c*pow(3,len(l)-1,m) ans c*pow(3,len(l)-1,m) c pow(3,len(l)-1,m) pow 3 len(l)-1 len(l) len l 1 m m j = 1 j 1 while l[j] == '0':
    j += 1
    if j == len(l):
      j -= 1
      break
   l[j] == '0' l[j] l j '0' j += 1 j 1 if j == len(l):
      j -= 1
      break
   j == len(l) j len(l) len l j -= 1 j 1 break l = l[j:] l l[j:] l j: j c = (2*c)%m c (2*c)%m 2*c 2 c m ans = (ans+(2*int(l)+1)*c)%m ans (ans+(2*int(l)+1)*c)%m ans+(2*int(l)+1)*c ans (2*int(l)+1)*c 2*int(l)+1 2*int(l) 2 int(l) int l 1 c m print(ans) print ans j += 1 1 j ans = (ans+c*pow(3,len(l)-1,m))%m (ans+c*pow(3,len(l)-1,m))%m ans c = (2*c)%m (2*c)%m c ans = (ans+(2*int(l)+1)*c)%m (ans+(2*int(l)+1)*c)%m ans m = 10**9+7 10**9+7 m j -= 1 1 j l = input() input() l c = 1 1 c l = l[j:] l[j:] l ans = 0 0 ans j = 1 1 j
l = input()
m = 10**9+7
ans = 0
c = 1
while len(l) > 1:
  ans = (ans+c*pow(3,len(l)-1,m))%m
  j = 1
  while l[j] == '0':
    j += 1
    if j == len(l):
      j -= 1
      break
  l = l[j:]
  c = (2*c)%m
ans = (ans+(2*int(l)+1)*c)%m
print(ans)