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 n,i,j,cnt[2],cur[2],u[200200];
char s[200200];
long long r;
int main() {
  scanf("%s",s);
  n=strlen(s);
  for (i=j=0; i<n; i++) if (s[i]=='1' || j%2==1) {
    cnt[j%2]+=s[i]-'0';
    u[i]=j%2+1;
    r+=cnt[0];
    j++;
  }
  for (i=n-1; i>=0; i--) if (u[i]==0) {
    swap(cur[0],cur[1]);
    cur[int(cnt[0]!=cnt[1])]+=s[i]-'0';
    r+=cnt[0]+cur[0];
  } else if (s[i]=='1') {
    cnt[u[i]-1]--;
    cur[u[i]-1]++;
  }
  printf("%lld\n",r);
  return 0;
}
