#abc129e. [abc129_e]Sum Equals Xor

[abc129_e]Sum Equals Xor

問題文

正整数 LL が二進数表記で与えられます。 以下の条件を満たす非負整数 a,ba, b の組 (a,b)(a, b) がいくつ存在するか求めてください:

  • a+bleqLa + b \\leq L
  • a+b=atextXORba + b = a \\text{ XOR } b

ただし、この値は非常に大きくなることがあるので、109+710^9 + 7 で割った余りを出力してください。

XOR とは

整数 A,BA, B のビットごとの排他的論理和 atextXORba \\text{ XOR } b は、以下のように定義されます。

atextXORba \\text{ XOR } b を二進数表記した際の 2k2^k (kgeq0k \\geq 0) の位の数は、A,BA, B を二進数表記した際の 2k2^k の位の数のうち一方のみが 11 であれば 11、そうでなければ 00 である。 例えば、3textXOR5=63 \\text{ XOR } 5 = 6 となります (二進数表記すると: 011textXOR101=110011 \\text{ XOR } 101 = 110)。

制約

  • LLは二進数表記で与えられ、先頭文字は必ず 11 である
  • 1leqL<2100,0011 \\leq L < 2^{100,001}

入力

入力は以下の形式で標準入力から与えられる。

LL

出力

条件を満たす組 (a,b)(a, b) の個数を 109+710^9 + 7 で割った余りを出力せよ。


入力例 1

10

出力例 1

5

条件を満たす (a,b)(a, b) としては (0,0),(0,1),(1,0),(0,2),(2,0)(0, 0), (0, 1), (1, 0), (0, 2), (2, 0)55 つが考えられます。


入力例 2

1111111111111111111

出力例 2

162261460