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;
const int N=2e5+10;
typedef long long ll;

int gi() {
	int x=0,o=1;char ch=getchar();
	while(!isdigit(ch)&&ch!='-') ch=getchar();
	if(ch=='-') o=-1,ch=getchar();
	while(isdigit(ch)) x=x*10+ch-'0',ch=getchar();
	return x*o;
}

int n,cnt,st[N],tp;
char s[N];
ll ans;

int main() {
	scanf("%s",s+1);n=strlen(s+1);
	for(int i=1;i<=n;i++) cnt+=(s[i]=='0');
	if(cnt==n) return cout<<0,0;
	for(int i=n-cnt-1;i;i--) ans+=(i+1)/2;
	for(int i=1;i<=n;i++)
		if(s[i]=='0') st[++tp]=0;
		else if(st[tp]==1) --tp,ans+=cnt+1;
		else st[++tp]=1;
	int sum=0;
	for(int i=1,p=0;i<=tp;i++) {
		if(st[i]==0) ++sum;
		else {
			++p;
			if(p&1) ans+=cnt+1-(sum+1)/2;
			else ans+=cnt+1-(sum/2+1);
		}
	}
	cout<<ans;
	return 0;
}
