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;
string s,t;
long long ans;
int main(){
	cin>>s;
	long long cnt=count(s.begin(),s.end(),'1');
	for(long long i=0;i<=cnt;++i){
		ans+=(i+1)/2;
	}
	for(long long i=0;i<s.size();++i){
		t+=s[i];
		long long sz=t.size();
		if(sz>=2&&t[sz-1]=='1'&&t[sz-2]=='1'){
			t.pop_back();
			t.pop_back();
			ans+=s.size()-cnt;
		}
	}
	s=t;
	cnt=count(s.begin(),s.end(),'1');
	long long c=0;
	for(long long i=0;i<s.size();++i){
		if(s[i]=='1'){
			ans+=s.size()-cnt-((i+1)/2-(c+1)/2);
			c++;
		}
	}
	cout<<ans<<'\n';
	return 0;
}