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(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	string s;
	cin>>s;
	int zeros=0;
	for(auto it:s)
		zeros+=(it=='0');
	string t;
	long long int ans=0,cnt=0;
	for(auto it:s){
		if(it=='0')	t.push_back(it);
		else{
			if(t.size()&&t.back()=='1')	cnt++,t.pop_back();
			else	t.push_back(it);
		}
	}
	ans=cnt*zeros;
	for(int i=1;i<=s.size()-zeros;i++)
		ans+=(i+1)/2;
	cnt=0;
	long long int ones=0;
	for(int i=0;i<t.size();i++){
		auto it=t[i];
		if(it=='0')	cnt++;
		else{
			ans+=(zeros-cnt);
			ans+=(cnt-ones+(i%2==0))/2;
			ans+=(ones+1)/2;
			ones++;
		}
	}
	cout<<ans<<endl;
}
