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 n,s,i,j,p;
long long ans;
char c[200005];
int main()
{
	scanf("%s",c+1);
	for(i=1;c[i];++i)
		if(c[i]=='0')
			++s;
	for(i=1;c[i];++i)
	{
		if(c[i]=='0')
			break;
		if(i&1)
			ans+=s+1;
	}
	for(++i;c[i];++i)
	{
		++p;
		int s0=0,s1=0;
		for(j=i;c[j]=='1';++j)
		{
			if(j&1)
				++s1;
			else
				++s0;
		}
		if(s0<s1)
			ans+=(p+1)/2*s0+p/2*s1+1ll*s1*(s+1-p);
		else
			ans+=((p+1)/2-1)*s0+(p/2+1)*s1+1ll*s0*(s+1-p);
		i=j;
	}
	s=-1;
	for(i=1;c[i];++i)
		if(c[i]=='1')
			++s;
	while(s>0)
	{
		ans+=(s+1)/2;
		--s;
	}
	cout<<ans;
}
