#include<iostream>
using namespace std;
const long long MAXN = 100005;
long long n,cnt = 0;
long long a[MAXN];
long long dp[32];
bool f[MAXN][32];
void Ten_to_Two(long long x,int index){
int last = 31;
while(x){
f[index][last] = x % 2;
last --;
x /= 2;
}
}
int main(){
freopen("bzoj_4300.in","r",stdin);
freopen("bzoj_4300.out","w",stdout);
cin.tie(0) -> ios::sync_with_stdio(0);
cin >> n;
for(long long i = 1;i <= n;i ++){
cin >> a[i];
Ten_to_Two(a[i],i);
}
for(long long i = 1;i <= n;i ++){
long long sum = 0;
for(long long j = 0;j <= 31;j ++){
if(f[i][j]) sum = max(sum,dp[j]);
}
sum ++;
for(long long j = 0;j <= 31;j ++){
if(f[i][j]) dp[j] = max(dp[j],sum);
}
cnt = max(cnt,sum);
}
cout << cnt << '\n';
return 0;
}