Takahashi has an empty string S and a variable x whose initial value is 0.

Also, we have a string T consisting of `0` and `1`.

Now, Takahashi will do the operation with the following two steps |T| times.

* Insert a `0` or a `1` at any position of S of his choice.
* Then, increment x by the sum of the digits in the odd positions (first, third, fifth, ...) of S. For example, if S is `01101`, the digits in the odd positions are `0`, `1`, `1` from left to right, so x is incremented by 2.



Print the maximum possible final value of x in a sequence of operations such that S equals T in the end.

Constraints

* 1 \leq |T| \leq 2 \times 10^5
* T consists of `0` and `1`.

Input

Input is given from Standard Input in the following format:


T


Output

Print the maximum possible final value of x in a sequence of operations such that S equals T in the end.

Examples

Input

1101


Output

5


Input

0111101101


Output

26
#include <bits/stdc++.h>
using namespace std;

const int maxn = 1000010;
int n, num;
char s[maxn];
long long ans;

int main() {
    scanf("%s", s + 1), n = strlen(s + 1);
    for (int i = 1; i <= n; i++) {
        if (s[i] == '0') num++;
    }
    int cur0 = 0, cur1 = 0;
    for (int i = 1; i <= n; i++) {
        if (s[i] == '0') {
            cur0++;
        } else {
            cur1++;
            if (s[i + 1] == '1') {
                ans += num + 1;
                cur1++, i++;
            } else {
                ans += num - cur0;
                if (i & 1) ans += (cur0 + 2) >> 1;
                else ans += (cur0 + 1) >> 1;
            }
        }
    }
    for (int i = 1; i < cur1; i++) ans += (i + 1) >> 1;
    printf("%lld\n", ans);
    return 0;
}