#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[10000005],pr[10000005],c,ans;
bool vis[10000005];
map<int,int>mp;
int dp[10000005];
void init(){
for(int i=2;i<=10000000;i++){
if(vis[i]==0) pr[++c]=i;
for(int j=1;j<=c&&i*pr[j]<=10000000;j++){
vis[i*pr[j]]=1;
if(i%pr[j]==0) break;
}
}
}
signed main(){
freopen("item.in","r",stdin);
freopen("item.out","w",stdout);
init();
cin>>n;
for(int i=1;i<=n;i++){
int x;
cin>>x;
mp[x]++;
}
for(int i=1;i<=10000000;i++){
dp[i]+=mp[i];
for(int j=1;j<=c&&i*pr[j]<=10000000;j++){
dp[i*pr[j]]=max(dp[i*pr[j]],dp[i]);
}
ans=max(dp[i],ans);
}
cout<<ans;
return 0;
}
已过,此帖结