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>
#define pb push_back
#define mp make_pair
#define x first
#define y second

using namespace std;

typedef long long ll;

ll answer[200005];

int main()
{
 	//freopen("input.txt", "r", stdin);
 	//freopen("output.txt", "w", stdout);
 	ios_base::sync_with_stdio(0); cin.tie(0);
 	string s;
 	cin >> s;
 	int n = (int) s.length();

 	for (int i = 1; i <= n; i++) answer[i] = (ll) (i + 1) / 2 + answer[i - 1];

 	int len = n, pref = 0, odd = 0, even = 0;
 	for (int i = 0; i < n; i++)
 		if (i % 2 == 0) odd += s[i] - '0';
 		else even += s[i] - '0';

 	int uk = 0;
 	ll ans = 0;
 	while (uk < n)
 	{
 	 	while (uk < n && s[uk] == '0')
 	 	{
 	 		ans += (ll) (pref + odd);
 	 		swap(odd, even);
 	 		len--;
 	 		uk++;
 	 	}
 	 	pref++, odd--;
 	 	if (uk + 1 < n && s[uk + 1] == '1') even--;
 	 	uk += 2;
 	}
 	ans += answer[len];
 	cout << ans << '\n';
 	return 0;
}