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 "climits"
#include "list"
#include "queue"
#include "stack"
#include "set"
#include "functional"
#include "algorithm"
#include "string"
#include "map"
#include "unordered_map"
#include "unordered_set"
#include "iomanip"
#include "cmath"
#include "random"
#include "bitset"
#include "cstdio"
#include "numeric"
#include "cassert"
#include "ctime"

using namespace std;

constexpr long long int MOD = 1000000007;
//constexpr int MOD = 1000000007;
//constexpr int MOD = 998244353;
//constexpr long long int MOD = 998244353;
constexpr double EPS = 1e-9;

//int N, M, K, H, W, L, R;
long long int N, M, K, H, W, L, R;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);

	string s;
	cin >> s;
	long long int cnt = 0;
	for (auto i : s)cnt += i - '0';
	long long int ans = 0;
	for (int i = 1; i <= cnt; i++) {
		ans += (i + 1) / 2;
	}
	int length = cnt;
	int one = cnt;
	cnt = 0;
	for (auto &i : s) {
		cnt += i - '0';
		if (i == '0' && (cnt & 1)) {
			length++;
			i = 'A';
			cnt++;
			ans += (length + 1) / 2;
		}
	}
	reverse(s.begin(), s.end());
	cnt = 0;
	int p = length;
	int ok = 0;
	int ng = 0;
	for (auto i : s) {
		if (i == '1')cnt++;
		if (i == '0') {
			swap(ok, ng);
			ans += ok + (p + 1) / 2;
		}
		else {
			if (i == '1') {
				if (p & 1)ok++;
				else ng++;
			}
			p--;
		}
	}
	cout << ans << endl;
}