import sys

def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし

L = LI2()
l = len(L)
mod = 10**9+7

A = []
for i in range(l):
    if L[i] == 1:
        A.append(l-i-1)
A.append(0)

ans = 0
for i in range(len(A)):
    ans += pow(3,A[i],mod)*pow(2,i,mod)
    ans %= mod

print(ans) import sys sys def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし LI2 L = LI2() L LI2() LI2 l = len(L) l len(L) len L mod = 10**9+7 mod 10**9+7 10**9 10 9 7 A = [] A [] for i in range(l):
    if L[i] == 1:
        A.append(l-i-1) i range(l) range l if L[i] == 1:
        A.append(l-i-1) L[i] == 1 L[i] L i 1 A.append(l-i-1) A.append A append l-i-1 l-i l i 1 A.append(0) A.append A append 0 ans = 0 ans 0 for i in range(len(A)):
    ans += pow(3,A[i],mod)*pow(2,i,mod)
    ans %= mod i range(len(A)) range len(A) len A ans += pow(3,A[i],mod)*pow(2,i,mod) ans pow(3,A[i],mod)*pow(2,i,mod) pow(3,A[i],mod) pow 3 A[i] A i mod pow(2,i,mod) pow 2 i mod ans %= mod ans mod print(ans) print ans l = len(L) len(L) l mod = 10**9+7 10**9+7 mod ans += pow(3,A[i],mod)*pow(2,i,mod) pow(3,A[i],mod)*pow(2,i,mod) ans def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし LI2 L = LI2() LI2() L A = [] [] A ans = 0 0 ans ans %= mod mod ans
import sys

def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし

L = LI2()
l = len(L)
mod = 10**9+7

A = []
for i in range(l):
    if L[i] == 1:
        A.append(l-i-1)
A.append(0)

ans = 0
for i in range(len(A)):
    ans += pow(3,A[i],mod)*pow(2,i,mod)
    ans %= mod

print(ans)