#include <bits/stdc++.h>
using namespace std;
bool h[1000009]={0};
int dp[1000009]={0};
int a[1000009]={0};
vector<int> v[1000009];
int main()
{
	int n,x,m=0,ans=0;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
		h[a[i]]=1;
		m=max(a[i],m);
	}
	sort(a,a+n);
	for(int i=0;i<n;i++)
	{
		int p=0;
		if(h[a[i]])
		for(vector<int>::iterator it=v[a[i]].begin();it!=v[a[i]].end();it++)
		{
			p=max(p,dp[*it]);
		}
		dp[a[i]]=1+p;
		ans=max(ans,dp[a[i]]);
		for(int j=2;a[i]*j<=m;j++)
		{
			if(h[a[i]*j]==1)
			{
				v[a[i]*j].push_back(a[i]);
			}
		}
	}
	printf("%d\n",ans);
	return 0;
}