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;

#define N 300000

int n,tot,pre[N],a[N];
bool vis[N];
long long ans;
char s[N];

int main(){
	scanf("%s",s+1); n=strlen(s+1);
	for (int i=1;i<=n;++i){
		a[i]=s[i]-'0';
		pre[i]=pre[i-1]+(a[i]==0);
	}
	for (int i=1;i<=n;++i){
		if (a[i]==1){
			ans+=((i&1)+pre[i]+1)/2;
			if (!vis[i-1]){
				vis[i]=1;
				ans+=pre[n]-pre[i];
			}
		}
	}
	for (int i=n-pre[n]-1;i>0;--i) ans+=(i+1)/2;
	printf("%lld\n",ans);
	
	return 0;
}
			