As a tradition, every year before IOI all the members of Natalia Fan Club are invited to Malek Dance Club to have a fun night together. Malek Dance Club has 2<sup class="upper-index">*n*</sup> members and coincidentally Natalia Fan Club also has 2<sup class="upper-index">*n*</sup> members. Each member of MDC is assigned a unique id *i* from 0 to 2<sup class="upper-index">*n*</sup> - 1. The same holds for each member of NFC.

One of the parts of this tradition is one by one dance, where each member of MDC dances with a member of NFC. A dance pair is a pair of numbers (*a*, *b*) such that member *a* from MDC dances with member *b* from NFC.

The complexity of a pairs' assignment is the number of pairs of dancing pairs (*a*, *b*) and (*c*, *d*) such that *a* &lt; *c* and *b* &gt; *d*.

You are given a binary number of length *n* named *x*. We know that member *i* from MDC dances with member <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/064f62f758022f9f352d238ee5ed93ec9a92138b.png" style="max-width: 100.0%;max-height: 100.0%;"/> from NFC. Your task is to calculate the complexity of this assignment modulo 1000000007 (10<sup class="upper-index">9</sup> + 7).

Expression <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/b364f2e04c665b78b924ec10666327a4ef4635bc.png" style="max-width: 100.0%;max-height: 100.0%;"/> denotes applying «XOR» to numbers *x* and *y*. This operation exists in all modern programming languages, for example, in C++ and Java it denotes as «^», in Pascal — «xor».
The first line of input contains a binary number *x* of lenght *n*, (1 ≤ *n* ≤ 100).

This number may contain leading zeros.
s,m,ans=input()[::-1],int(1e9+7),0
for i in range(len(s)):
  if s[i]=='1':ans=(ans+pow(2,i,m))%m
print(ans*pow(2,len(s)-1,m))