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;

typedef long long ll;

const int Maxn = 200005;

char str[Maxn];
int slen;
bool tk[Maxn];
int len;
ll res;

int main()
{
    scanf("%s", str); slen = strlen(str);
    for (int i = 0; i < slen; i++)
        if (str[i] == '1' || str[i] == '0' && len % 2 == 1) {
            len++;
            res += (len + 1) / 2;
            tk[i] = true;
        }
    int ev = 0, od = 0;
    for (int i = slen - 1; i >= 0; i--)
        if (tk[i]) {
            if (str[i] == '1')
                if (len % 2) od++;
                else ev++;
            len--;
        } else {
            swap(ev, od);
            res += (len + 1) / 2 + od;
        }
    cout << res << endl;
    return 0;
}
