#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void setmin(T &x, T y) {
  if (y < x) x = y;
}
template <typename T>
inline void setmax(T &x, T y) {
  if (y > x) x = y;
}
template <typename T>
inline T gcd(T a, T b) {
  while (b) swap(a %= b, b);
  return a;
}
const int MAX = (1 << 19);
const int INF = 1e9 + 7;
const long long BIG_INF = 1e18 + 5;
long long n, m, k;
long long pole;
long long tree[2 * MAX];
int get_sum(int pocz, int kon) {
  if (kon < pocz) {
    return 0;
  }
  pocz += MAX, kon += MAX;
  long long sum = tree[pocz];
  if (pocz != kon) {
    sum += tree[kon];
  }
  while (pocz / 2 != kon / 2) {
    if (pocz % 2 == 0) {
      sum += tree[pocz + 1];
    }
    if (kon % 2 == 1) {
      sum += tree[kon - 1];
    }
    pocz /= 2;
    kon /= 2;
  }
  return sum;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  cin >> n;
  vector<long long> tab(n);
  for (auto &u : tab) {
    cin >> u;
  }
  vector<long long> pom(n);
  for (int i = 0; i < n; i++) {
    int ilosc = 0;
    while (tab[i]) {
      if (tab[i] & 1) {
        ilosc++;
      }
      tab[i] /= 2;
    }
    tab[i] = ilosc;
  }
  pom = tab;
  for (int i = 0; i < n; i++) {
    tab[i] = tab[i] % 2;
  }
  for (int i = 1; i < n; i++) {
    tab[i] = (tab[i] + tab[i - 1]) % 2;
  }
  for (int i = 0; i < n; i++) {
    tree[MAX + i] = tab[i];
  }
  for (int i = MAX - 1; i >= 1; i--) {
    tree[i] = tree[i * 2] + tree[i * 2 + 1];
  }
  long long odpowiedz = 0;
  for (int i = 0; i < n - 1; i++) {
    long long nast = i + 70;
    if (nast < n)
      if (i == 0 || tab[i - 1] == 0) {
        long long dwa = get_sum(nast, n - 1);
        odpowiedz += (n - nast) - dwa;
      } else {
        long long dwa = get_sum(nast, n - 1);
        odpowiedz += dwa;
      }
    long long maxi = pom[i];
    long long sum_poz = 0;
    for (int j = i + 1; j < min(n, (long long)(i + 70)); j++) {
      if (pom[j] > maxi) {
        sum_poz += maxi;
        maxi = pom[j];
      } else {
        sum_poz += pom[j];
      }
      if (maxi <= sum_poz && (maxi + sum_poz) % 2 == 0) {
        odpowiedz++;
      }
    }
  }
  cout << odpowiedz;
}
