S=input()
l=len(S)
pow2=[1]
pow3=[1]
mod=10**9+7

for i in range(l+10):
    pow2.append(pow2[-1]*2%mod)
    pow3.append(pow3[-1]*3%mod)
    
if l==1:
    if S=="0":
        print(1)
    else:
        print(3)

else:
    ans=pow3[l-1]
    cnt=1 #現在の桁とその左側の1の数
    for i in range(l-1):
        if i==l-2:
            if S[i+1]=="1":
                ans+=pow2[cnt]*3%mod
            else:
                ans+=pow2[cnt]%mod
        else:
            if S[i+1]=="1":
                ans+=pow2[cnt]*pow3[l-i-2]%mod
                cnt+=1                                                  
    print(ans%mod) S=input() S input() input l=len(S) l len(S) len S pow2=[1] pow2 [1] 1 pow3=[1] pow3 [1] 1 mod=10**9+7 mod 10**9+7 10**9 10 9 7 for i in range(l+10):
    pow2.append(pow2[-1]*2%mod)
    pow3.append(pow3[-1]*3%mod)
     i range(l+10) range l+10 l 10 pow2.append(pow2[-1]*2%mod) pow2.append pow2 append pow2[-1]*2%mod pow2[-1]*2 pow2[-1] pow2 -1 2 mod pow3.append(pow3[-1]*3%mod) pow3.append pow3 append pow3[-1]*3%mod pow3[-1]*3 pow3[-1] pow3 -1 3 mod if l==1:
    if S=="0":
        print(1)
    else:
        print(3)

else:
    ans=pow3[l-1]
    cnt=1 #現在の桁とその左側の1の数
    for i in range(l-1):
        if i==l-2:
            if S[i+1]=="1":
                ans+=pow2[cnt]*3%mod
            else:
                ans+=pow2[cnt]%mod
        else:
            if S[i+1]=="1":
                ans+=pow2[cnt]*pow3[l-i-2]%mod
                cnt+=1                                                  
    print(ans%mod) l==1 l 1 if S=="0":
        print(1)
    else:
        print(3) S=="0" S "0" print(1) print 1 print(3) print 3 ans=pow3[l-1] ans pow3[l-1] pow3 l-1 l 1 cnt=1 cnt 1 for i in range(l-1):
        if i==l-2:
            if S[i+1]=="1":
                ans+=pow2[cnt]*3%mod
            else:
                ans+=pow2[cnt]%mod
        else:
            if S[i+1]=="1":
                ans+=pow2[cnt]*pow3[l-i-2]%mod
                cnt+=1                                                  
     i range(l-1) range l-1 l 1 if i==l-2:
            if S[i+1]=="1":
                ans+=pow2[cnt]*3%mod
            else:
                ans+=pow2[cnt]%mod
        else:
            if S[i+1]=="1":
                ans+=pow2[cnt]*pow3[l-i-2]%mod
                cnt+=1                                                  
     i==l-2 i l-2 l 2 if S[i+1]=="1":
                ans+=pow2[cnt]*3%mod
            else:
                ans+=pow2[cnt]%mod
         S[i+1]=="1" S[i+1] S i+1 i 1 "1" ans+=pow2[cnt]*3%mod ans pow2[cnt]*3%mod pow2[cnt]*3 pow2[cnt] pow2 cnt 3 mod ans+=pow2[cnt]%mod ans pow2[cnt]%mod pow2[cnt] pow2 cnt mod if S[i+1]=="1":
                ans+=pow2[cnt]*pow3[l-i-2]%mod
                cnt+=1                                                  
     S[i+1]=="1" S[i+1] S i+1 i 1 "1" ans+=pow2[cnt]*pow3[l-i-2]%mod ans pow2[cnt]*pow3[l-i-2]%mod pow2[cnt]*pow3[l-i-2] pow2[cnt] pow2 cnt pow3[l-i-2] pow3 l-i-2 l-i l i 2 mod cnt+=1 cnt 1 print(ans%mod) print ans%mod ans mod mod=10**9+7 10**9+7 mod ans=pow3[l-1] pow3[l-1] ans ans+=pow2[cnt]%mod pow2[cnt]%mod ans cnt=1 1 cnt l=len(S) len(S) l pow2=[1] [1] pow2 ans+=pow2[cnt]*3%mod pow2[cnt]*3%mod ans ans+=pow2[cnt]*pow3[l-i-2]%mod pow2[cnt]*pow3[l-i-2]%mod ans S=input() input() S pow3=[1] [1] pow3 cnt+=1 1 cnt
S=input()
l=len(S)
pow2=[1]
pow3=[1]
mod=10**9+7

for i in range(l+10):
    pow2.append(pow2[-1]*2%mod)
    pow3.append(pow3[-1]*3%mod)
    
if l==1:
    if S=="0":
        print(1)
    else:
        print(3)

else:
    ans=pow3[l-1]
    cnt=1 #現在の桁とその左側の1の数
    for i in range(l-1):
        if i==l-2:
            if S[i+1]=="1":
                ans+=pow2[cnt]*3%mod
            else:
                ans+=pow2[cnt]%mod
        else:
            if S[i+1]=="1":
                ans+=pow2[cnt]*pow3[l-i-2]%mod
                cnt+=1                                                  
    print(ans%mod)