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;

int main(){
    string T;
    cin >> T;
    int N = T.size();
    vector<int> A(N);
    for(int i=0; i<N; i++) A[i] = T[i]-'0';
    
    int64_t one = accumulate(A.begin(), A.end(), 0);
    int64_t pairs = 0;
    vector<int> B;
    for(int a : A){
        if(a && B.size() && B.back()){
            pairs++;
            B.pop_back();
        }else{
            B.push_back(a);
        }
    }
    int sz = B.size();
    vector<int> S0(sz+1);
    for(int i=0; i<sz; i++) S0[i+1] = S0[i] + (B[i]==0);

    int64_t ans = 0;
    for(int i=0; i<sz; i++) if(B[i]) ans += (S0[i]+(i%2==0))/2 + (S0[sz] - S0[i]);
    ans += S0[sz]*pairs;
    while(one){
        ans += (one+1)/2;
        one--;
    }

    cout << ans << endl;
    return 0;
}
