# https://atcoder.jp/contests/abc129/tasks/abc129_e
# 問題文
# 正整数 L が二進数表記で与えられます。 
# 以下の条件を満たす非負整数 a,b の組 (a,b) がいくつ存在するか求めてください
# a+b≤L
# a+b=a XOR b
# ただし、この値は非常に大きくなることがあるので、
# 109+7 で割った余りを出力してください。
# XOR とは制約Lは二進数表記で与えられ、
# 先頭文字は必ず 1 である
# 1≤L<2**100001

# 1111111111111111111
# 162261460

MOD = (10**9) + 7

L = gets.chomp
dp = Array.new(2) {[]}
dp[0][0] = 1
dp[1][0] = 0

one = '1'
counter = 0
L.chars do |c|
  if c == one
    dp[0][counter+1] = (dp[0][counter] * 2)%MOD
    dp[1][counter+1] = (dp[0][counter] + (dp[1][counter] * 3)%MOD)%MOD
  else
    dp[0][counter+1] = dp[0][counter]
    dp[1][counter+1] = (dp[1][counter] * 3)%MOD
  end
  counter += 1
end

puts (dp[0].last + dp[1].last)%MOD