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 <iostream> 
#include <cstring>

char s[201000];
 
int main()
{
	scanf("%s", s + 1); int n = strlen(s + 1);
	long long ans = 0; int sum = 0, t = 0;
	for(int i = 1; i <= n; i++)
	{
		if(s[i] == '0') 
		{
			ans += sum;
			if(t == 1) t = 0;
		}
		else
		{
			if(t == 0) sum++, t = 1;
			else t = 0;
		}
	}
	sum = 0;
	for(int i = 1; i <= n; i++)
	{
		if(s[i] == '0') sum++;
		else ans += sum / 2 + ((i & 1) & (sum & 1));
	}
	sum = 0;
	for(int i = 1; i <= n; i++)
		if(s[i] == '1')
		{
			sum++;
			ans += sum + 1 >> 1;
		}
	printf("%lld\n", ans);
}

//考虑倒着删，可以简单证明一定先删0，然后每个1往左移的次数是固定的，也就意味着删除0的时候对右边的贡献是固定的
//那么只需要让左边的贡献最大，这个可以贪心的取到上界。 