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;

typedef long long int LL;

#define st first
#define nd second
#define PLL pair <LL, LL>
#define PII pair <int, int>

const int N = 1e6 + 7;
const int MX = 1e9 + 7;
const LL INF = 1e18 + 9LL;

int n;
char in[N];

int main(){
	scanf("%s", in + 1);
	n = strlen(in + 1);
	
	LL ans = 0;
	for(int i = 1; i <= n; ++i)
		if(in[i] == '1')
			ans += (i + 1) / 2;
	
	int it = 1;
	int pref = 0;

	while(it <= n){
		if(in[it] == '0'){
			ans += pref;
			++it;
			continue;
		}
		
		int t = it;
		while(t <= n && in[t] == '1')
			++t;
		
		pref += (t - it + 1) / 2;
		it = t;
	}
	
	printf("%lld\n", ans);
	return 0;
}