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
#define f(i, x, n) for (int i = x; i < (int)(n); ++i)

int const N = 200000;
char s[N + 1];
bool y[N];

int main(){
	scanf("%s", s);
	int o = 0, n = strlen(s);
	ll an = 0;
	f(i, 0, n)if (s[i] == '1'){
		++o;
		an += o + 1 >> 1;
	}
	bool z = false;
	f(i, 0, n)if (s[i] == '0'){
		if ((i & 1 ^ z)){
			++o;
			an += o + 1 >> 1;
			y[i] = true;
		}else z ^= 1;
	}
	
	int a = 0, b = 0;
	for (int i = n - 1; i >= 0; --i)if (s[i] == '0'){
		if (y[i])++a;
		else {
			swap(a, b);
			++b;
			++o;
			an += (o + 1 >> 1) - b;
		}
	}
	
	printf("%lld\n", an);
}