#include <bits/stdc++.h>
using namespace std;
int n, a[100005], __next[100005][20], st[4 * 100005 + 1];
bool present[100005 * 20];
void build(int id = 1, int s = 0, int e = n - 1) {
  if (s == e) {
    st[id] = a[s];
    return;
  }
  int mid = (s + e) >> 1;
  build(2 * id, s, mid);
  build(2 * id + 1, mid + 1, e);
  st[id] = st[2 * id] | st[2 * id + 1];
}
int range_or(int l, int r, int id = 1, int s = 0, int e = n - 1) {
  if (e < l || r < s) return 0;
  if (l <= s && e <= r) return st[id];
  int mid = (s + e) >> 1;
  int left = range_or(l, r, 2 * id, s, mid);
  int right = range_or(l, r, 2 * id + 1, mid + 1, e);
  return left | right;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  build();
  for (int i = 0; i < 20; i++) __next[n - 1][i] = -1;
  for (int i = 0; i < n - 1; i++) {
    for (int j = 0; j < 20; j++) __next[n - i - 2][j] = __next[n - i - 1][j];
    for (int j = 0; j < 20; j++)
      if (a[n - i - 1] & (1 << j)) __next[n - i - 2][j] = n - i - 1;
  }
  for (int i = 0; i < n; i++) {
    present[a[i]] = true;
    for (int j = 0; j < 20; j++) {
      if (!(a[i] & (1 << j))) {
        int l = i, r = __next[i][j];
        if (r != -1) {
          present[range_or(l, r)] = true;
        }
      }
    }
  }
  int ans = 0;
  for (int i = 0; i < 20 * 100005; i++)
    if (present[i]) ans++;
  printf("%d", ans);
  return 0;
}
