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 <iostream>
#include <string>
#include <vector>
using namespace std;
#pragma warning (disable: 4996)

long long BASE = 0;
long long MINUS = 0;
string S;
vector<int> vec, vec2;

int main() {
	cin >> S;
	for (int i = 0; i < S.size(); i++) {
		if (i % 2 == 0) BASE += 1LL * (S.size() - i);
		if (S[i] == '0') vec.push_back(i + 1);
	}
	for (int i = 0; i < vec.size(); i++) vec[i] %= 2;

	int cnt = 0;
	for (int i = 0; i < vec.size(); i++) {
		cnt++;
		if (i + 1 == vec.size() || vec[i] != vec[i + 1]) {
			if (cnt <= i || vec[i] == 1) vec2.push_back(cnt);
			cnt = 0;
		}
	}
	for (int i = 0; i < vec2.size(); i++) MINUS += 1LL * ((i / 2LL) + 1LL) * vec2[i];
	
	cout << BASE - MINUS << endl;
	return 0;
}