#include <bits/stdc++.h>
using namespace std;
const long long N = 5e5 + 7;
const long long md = 998244353;
const long long inf = 1e18;
const double e = 1e-18;
long long gcd(long long a, long long b) {
  if (b == 0)
    return a;
  else
    return gcd(b, a % b);
}
int main() {
  long long n, m, k, w, zz = 0, x = 0, y = 0, l, jj, r, j;
  cin >> n;
  vector<long long> a(n), b(n), c(n);
  for (int i = 0; i < (n); i++) cin >> a[i];
  for (int i = 0; i < (n); i++) {
    w = 0;
    while (a[i] > 0) {
      if (a[i] % 2 == 1) w++;
      a[i] /= 2;
    }
    c[i] = w;
    b[i] = w % 2;
  }
  w = 0;
  x = 1;
  for (int i = 0; i < (n); i++) {
    w += b[i];
    if (w % 2 == 0)
      x++;
    else
      y++;
  }
  long long R = 0;
  for (int i = 0; i < (n); i++) {
    if (b[i] == 0) {
      x--;
    } else {
      w = y - 1;
      y = x;
      x = w;
    }
    R += x;
  }
  for (int i = 0; i < (n); i++) {
    w = c[i];
    long long ma = c[i];
    j = i + 1;
    if (w % 2 == 0) R--;
    while (j - i < 62 && j < n) {
      w += c[j];
      ma = max(ma, c[j]);
      if (w % 2 == 0 && ma * 2 > w) R--;
      j++;
    }
  }
  cout << R;
}
namespace {
auto fast_io = [] {
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(nullptr);
  return 0;
}();
}
