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;

int main(){
	string str; cin >> str; long long sum = 0 , cnt = 0;
	for(int i = 0 ; i < str.size() ; ++i) cnt += str[i] == '1';
	sum += (cnt / 2) * (cnt / 2 + 1) / 2 + ((cnt + 1) / 2) * ((cnt + 1) / 2 + 1) / 2;
	string str1; int cnt1 = 0;
	for(int i = 0 ; i < str.size() ; ++i)
		if(i + 1 < str.size() && str[i + 1] == '1' && str[i] == '1'){++cnt1; ++i;} else str1.push_back(str[i]);
	
	sum += cnt1 * (str.size() - cnt); int pre = 0;
	for(int i = 0 ; i < str1.size() ; ++i)
		if(str1[i] == '1'){++pre; int num0 = i - pre + 1; sum += str.size() - cnt - (pre & 1 ? (num0 + 1) >> 1 : (num0 >> 1));}

	cout << sum; return 0;
}
