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<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char a[200020],b[200020];
int n,m,cnt0,cnt1;
long long ans;
int main()
{
	scanf("%s",a+1);
	n=strlen(a+1);
	for(int i=1;i<=n;++i)
		if(a[i]=='0')++cnt0;
		else ++cnt1;
	for(int i=1;i<=cnt1;++i)ans+=(i+1)/2;
	for(int i=1;i<=n;++i)
	{
		if(a[i]=='0')b[++m]='0';
		else if(b[m]=='1')--m,ans+=cnt0;
		else b[++m]='1';
	}
	int precnt0=0;
	for(int i=1;i<=m;++i)
	{
		if(b[i]=='0')++precnt0;
		else ans+=cnt0-(i&1?precnt0/2:(precnt0+1)/2);
	}
	printf("%lld",ans);
	return 0;
}