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<iostream>
using namespace std;
string T;
int main()
{
	cin>>T;
	long ans=0;
	int one=0;
	for(int i=0;i<T.size();i++)
	{
		if(T[i]=='1')
		{
			one++;
			ans+=(one+1)/2;
		}
	}
	int pre=0;
	for(int i=0;i<T.size();i++)
	{
		if(T[i]=='0')
		{
			if(pre%2==1)
			{
				pre++;
				ans+=(one+pre+1)/2;
				T[i]='?';
			}
		}
		else
		{
			pre++;
			one--;
		}
	}
	int c[2]={},ad=0;
	for(int i=T.size();i--;)
	{
		if(T[i]=='0')
		{
			ans+=(pre+1)/2;
			ans+=c[(T.size()-i)%2];
		}
		else
		{
			pre--;
			if(T[i]=='1')c[(T.size()-i)%2]++;
		}
	}
	cout<<ans<<endl;
}
