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;
using UL = unsigned int;
using ULL = unsigned long long;
using LL = long long;
#define rep(i, n) for(UL i = 0; i < (n); i++)

struct Problem {
public:

	void Solve() {
		string T; cin >> T;
		ULL N = T.size();
		T.push_back('0');
		ULL L = 0;
		ULL R = N;
		ULL ans = 0;
		rep(i, N ) {
			if (L & 1) {
				if (T[i] == '1' && T[i + 1] == '0') {
					ans += (N - R + 1) / 2; R--;
				}
				else if (T[i] == '1') {
					ans += (N - R + 1) / 2; L++;
				}
				else {
					L++;
				}
			}
			else {
				if (T[i] == '0') {
					R--;
				}
				else {
					ans += (N - R) / 2;
					ans += R - L;
					L++;
				}
			}
		}
		cout << ans << endl;
	}
};

int main() {
	unique_ptr<Problem> p(new Problem());
	p->Solve();
	return 0;
}
