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>
#define ref(i,n) for(ll i=0;i<n;i++)
using namespace std;
typedef long ll;

long x1=0,all=0,x0=0,ans=0;
struct line{
    long be,le,bf;
};
int main(){
    string s;
    cin>>s;
    vector<line> v;
    ref(i,s.size()){
        if(s[i]=='1') x1++;
        if(s[i]=='0'||i==s.size()-1){

        line k;

        all+=x1;
        k.le=x1;
        k.be=all-x1;
        k.bf=x0;

        if(s[i]=='0') x0++;

        if(x1!=0) v.push_back(k);

        x1=0;

        }
    }

    ref(i,all) ans+=(i+2)/2;

    ref(i,v.size()){

        ans+=(x0-v[i].bf)*((v[i].le+1)/2);

        if(v[i].be%2) ans+=((v[i].bf+1)/2)*((v[i].le+1)/2)+(v[i].bf/2)*(v[i].le/2);

        else ans+=(v[i].bf/2)*((v[i].le+1)/2)+((v[i].bf+1)/2)*(v[i].le/2);

    }
    cout<<ans;


}


