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;

#define LL long long

const int maxN = 2e5 + 10;

int n, m;
LL ans;
char s[maxN + 1];

int main()
{
	scanf("%s", s + 1);
	n = strlen(s + 1);
	for(int i = 1; i <= n; i++) m += s[i] - '0';

	for(int i = 1; i <= m; i++) ans += (i + 1) / 2;
	
	int sum = 0;
	for(int i = 1, j; i <= n; i = j)
		if(s[i] == '0') sum ++, j = i + 1;
		else
		{
			j = i + 1;
			while(s[j] == '1' && j <= n) j ++;
			int len = j - i;
			ans += 1ll * (n - m) * (len >> 1);
			if(len & 1)
			{
				if(i & 1) ans += (sum + 1) / 2;
				else ans += sum / 2;
				ans += n - m - sum;
			}
		}
	
	printf("%lld\n", ans);
	return 0;
}
