#include <bits/stdc++.h>
using namespace std;
bool wystapienie[1050000];
vector<vector<int>> bit(23);
int n;
int t[100005];
int start;
int start_indeks;
int pierwsza_wieksza(int i, int baza);
bool nie_znaleziono;
int ostateczna;
int wyszukana;
int suma;
int potega;
int ostatni_indeks;
int indeks_chwilowy;
int liczba_or;
int poczatkowy_ostatni_indeks;
int indeks_liczby_or;
int brakujacy_bit;
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> t[i];
  for (int i = 1; i <= n; i++)
    for (int j = 0; j < 21; j++) {
      if (((t[i]) & (1 << j)) == (1 << j)) bit[j + 1].push_back(i);
    }
  for (int j = 1; j <= 21; j++) {
  }
  for (int i = 1; i <= n; i++) {
    liczba_or = t[i];
    indeks_liczby_or = i;
    wystapienie[liczba_or] = true;
    while (true) {
      ostateczna = 1000005;
      nie_znaleziono = true;
      for (int j = 0; j < 21; j++) {
        if (((~liczba_or) & (1 << j)) == (1 << j)) {
          brakujacy_bit = j + 1;
          if (!bit[brakujacy_bit].empty()) {
            if (bit[brakujacy_bit].back() > indeks_liczby_or) {
              wyszukana =
                  *(upper_bound(bit[brakujacy_bit].begin(),
                                bit[brakujacy_bit].end(), indeks_liczby_or));
              if (wyszukana < ostateczna) {
                ostateczna = wyszukana;
                nie_znaleziono = false;
              }
            }
          }
        }
      }
      if (nie_znaleziono)
        break;
      else {
        indeks_liczby_or = ostateczna;
        liczba_or = (liczba_or | t[indeks_liczby_or]);
        wystapienie[liczba_or] = true;
      }
    }
  }
  for (int i = 0; i < 1050000; i++)
    if (wystapienie[i]) {
      suma++;
    }
  cout << suma << endl;
  return 0;
}
