#include <bits/stdc++.h>
using namespace std;
long long n, x[200000], ma[18][200000], nxt[200000][31], lst[200000][31];
long long getMax(long long l, long long r) {
  int j = (int)log2(r - l + 1);
  return x[ma[j][l]] > x[ma[j][r - (1 << j) + 1]] ? ma[j][l]
                                                  : ma[j][r - (1 << j) + 1];
}
long long numberOfWays(long long l, long long r) {
  if (l >= r) return 0;
  long long m = getMax(l, r);
  long long nl = l - 1, nr = r + 1;
  for (int j = 0; j < 31; j++)
    if (!(x[m] & (1 << j))) nl = max(nl, lst[m][j]), nr = min(nr, nxt[m][j]);
  long long res = (m - l + 1) * (r - m + 1);
  res -= (m - nl) * (nr - m);
  res += numberOfWays(l, m - 1) + numberOfWays(m + 1, r);
  return res;
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> x[i];
  for (int j = 0; j < 31; j++) lst[0][j] = ((x[0] & (1 << j)) ? 0 : -1);
  for (int i = 1; i < n; i++)
    for (int j = 0; j < 31; j++)
      lst[i][j] = ((x[i] & (1 << j)) ? i : lst[i - 1][j]);
  for (int j = 0; j < 31; j++)
    nxt[n - 1][j] = ((x[n - 1] & (1 << j)) ? n - 1 : n);
  for (int i = n - 2; i >= 0; i--)
    for (int j = 0; j < 31; j++)
      nxt[i][j] = ((x[i] & (1 << j)) ? i : nxt[i + 1][j]);
  for (int i = 0; i < n; i++) ma[0][i] = i;
  for (int j = 0; (1 << j + 1) <= n; j++)
    for (int i = 0; i + (1 << j + 1) <= n; i++)
      ma[j + 1][i] =
          x[ma[j][i]] > x[ma[j][i + (1 << j)]] ? ma[j][i] : ma[j][i + (1 << j)];
  cout << numberOfWays(0, n - 1) << "\n";
}
