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=1e6+30;
typedef long long ll;
ll ans;
char s[maxn];
int n,a[maxn],m,top,p[maxn],cnt;

int main(){
    scanf("%s",s+1);
    n=strlen(s+1);
    for (int i=1;i<=n;i++) m+=(s[i]=='1');
    for (int i=1;i<=m;i++) ans+=(i+1)/2;
    for (int i=1;i<=n;i++){
        a[++top]=(s[i]=='1');
        if (top>1&&a[top]&&a[top-1]) top-=2,ans+=n-m;
    }
    for (int i=1;i<=top;i++) if (a[i]) p[++cnt]=i;
    for (int i=1;i<=cnt;i++) {
        int pre=p[i]-i,suf=n-m-pre;
        ans+=(pre+(i%2==0))/2+suf;
    }
    cout << ans << endl;
}
