#include <bits/stdc++.h>
using namespace std;
const int MAXN = 300050;
const int K = 20;
int n, A[MAXN], add[MAXN];
int sum(int l, int r) { return add[r] - add[l]; }
int st[K][1 << K];
void st_init(int *a) {
  for (int i = (0); i < (int)(n); i++) st[0][i] = a[i];
  for (int k = (1); k < (int)(K); k++)
    for (int i = (0); i < (int)(n - (1 << k) + 1); i++)
      st[k][i] = max(st[k - 1][i], st[k - 1][i + (1 << (k - 1))]);
}
int st_query(int s, int e) {
  int k = 31 - __builtin_clz(e - s);
  return max(st[k][s], st[k][e - (1 << k)]);
}
int main() {
  while (scanf("%d", &n) >= 1) {
    for (int i = (0); i < (int)(n); i++) {
      long long x;
      scanf("%lld", &x);
      A[i] = __builtin_popcountll(x);
    }
    for (int i = (0); i < (int)(n); i++) add[i + 1] = add[i] + A[i];
    st_init(A);
    long long ans = 0;
    int cnt[2];
    cnt[1] = 0;
    cnt[0] = 1;
    for (int i = (0); i < (int)(n); i++) {
      ans += cnt[add[i] % 2];
      cnt[add[i] % 2]++;
    }
    for (int i = (0); i < (int)(n); i++) {
      for (int j = (i + 1); j < (int)(min(n, i + 62)); j++) {
        int s = sum(i, j);
        if (s % 2) continue;
        int mx = st_query(i, j);
        if (s - mx < mx) {
          ans--;
        }
      }
    }
    printf("%lld\n", ans);
  }
  return 0;
}
