Home


Contest: Task: Related: TaskD TaskF

Score : $1600$ points

Problem Statement

Taichi thinks a binary string $X$ of odd length $N$ is beautiful if it is possible to apply the following operation $\frac{N-1}{2}$ times so that the only character of the resulting string is 1 :

  • Choose three consecutive bits of $X$ and replace them by their median. For example, we can turn 00110 into 010 by applying the operation to the middle three bits.

Taichi has a string $S$ consisting of characters 0, 1 and ?. Taichi wants to know the number of ways to replace the question marks with 1 or 0 so that the resulting string is beautiful, modulo $10^{9} + 7$.

Constraints

  • $1 \leq |S| \leq 300000$
  • $|S|$ is odd.
  • All characters of $S$ are either 0, 1 or ?.

Input

Input is given from Standard Input in the following format:

$S$

Output

Print the number of ways to replace the question marks so that the resulting string is beautiful, modulo $10^{9} + 7$.


Sample Input 1

1??00

Sample Output 1

2

There are $4$ ways to replace the question marks with 0 or 1 :

  • 11100 : This string is beautiful because we can first perform the operation on the last $3$ bits to get 110 and then on the only $3$ bits to get 1.

  • 11000 : This string is beautiful because we can first perform the operation on the last $3$ bits to get 110 and then on the only $3$ bits to get 1.

  • 10100 : This string is not beautiful because there is no sequence of operations such that the final string is 1.

  • 10000 : This string is not beautiful because there is no sequence of operations such that the final string is 1.

Thus, there are $2$ ways to form a beautiful string.


Sample Input 2

?

Sample Output 2

1

In this case, 1 is the only beautiful string.


Sample Input 3

?0101???10???00?1???????????????0????????????1????0

Sample Output 3

402589311

Remember to output your answer modulo $10^{9} + 7$.