#include<iostream>
#include<cstring>
using namespace std;
const int N = 1010;
int dp[N];
int n;
int a[N];
int dfs(int x)
{
if (dp[x]!=-1)return dp[x];
int sum = 1;
for(int j=1;j<x;j++)
{
if((a[x]&a[j])!=0)
{
sum=max(sum,dfs(j)+1);
}
}
dp[x]=sum;
return sum;
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
memset(dp,-1,sizeof(dp));
int res=1;
for(int wei=2;wei<=n;wei++)
{
res=max(res,dfs(wei));
}
cout<<res;
return 0;
}