#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5 + 100;
long long a[maxn];
long long get(long long n) {
  long long num = 0;
  while (n > 0) {
    if (n % 2 != 0) num++;
    n /= 2;
  }
  return num;
}
long long numj[maxn];
long long numo[maxn];
long long all[maxn];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%lld", &a[i]);
  long long ans = 0;
  all[0] = 0;
  numo[0] = 1;
  for (int i = 1; i <= n; i++) {
    a[i] = get(a[i]);
    all[i] = all[i - 1] + a[i];
    long long mx = a[i];
    for (int j = i - 1; j >= max(1, i - 62); j--) {
      mx = max(mx, a[j]);
      long long len = all[i] - all[j - 1];
      if ((len % 2 == 0) && (len >= mx * 2)) ans++;
    }
    if (i > 63) {
      if (all[i] & 1)
        ans += numj[i - 64];
      else
        ans += numo[i - 64];
    }
    numj[i] = numj[i - 1] + (all[i] % 2 == 1);
    numo[i] = numo[i - 1] + (all[i] % 2 == 0);
  }
  printf("%lld\n", ans);
  return 0;
}
