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 ll long long
#define N 200010
using namespace std;
string s;
bool e[N];
ll ans;
int cn,n,su[N],qu[3];
int main(){
	cin>>s;
	n=s.length();
	for (int i=1;i<=n;i++){
		e[i]=0;
		if (s[i-1]=='1'){cn++;ans+=(cn+1)/2;e[i]=1;}
	}
	for (int i=1;i<=n;i++){
		if (s[i-1]=='0'&&(su[i-1]%2==1))cn++,ans+=(cn+1)/2,e[i]=1;
		su[i]=su[i-1]+e[i];
	}
	for (int i=n;i>=1;i--){
		if (e[i]==0){
			ans+=(su[i-1]+1)/2+qu[(su[i]+1)%2];
		}
		swap(qu[0],qu[1]);
		if (s[i-1]=='1')qu[0]++;
	}
	cout<<ans<<endl;
	return 0;
}
