#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define dd double
#define ld long double
#define ull unsigned long long
#define yes cout << "YES\n"
#define no cout << "NO\n"
#define el "\n"
#define Arwa ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define fix(x) cout << fixed << setprecision(x)
#define all(v) v.begin(),v.end()
#define dpp(v,val) memset(v,val,sizeof(v))
#define mod 1e9+7
#define oo 1e9
const int N = 1e5 + 5;
int n;
vector<int>v,temp;
int dp[N];
int solve(int i,int j)
{
if(i==n) return 0;
int t=0,l=0;
int &ret=dp[j];
if(ret!=-1)
return ret;
if(j==100003)
{
t=solve(i+1,i)+1;
l=solve(i+1,j);
}
else
{
if(__gcd(temp[i],temp[j])!=1)
t=solve(i+1,i)+1;
l=solve(i+1,j);
}
return ret=max(t,l);
}
void HereWeGoAgain()
{
cin>>n;
v.resize(n);
dpp(dp,-1);
for(int i=0;i<n;i++) cin>>v[i];
for(int i=0;i<v.size();i++)
{
auto it=lower_bound(all(temp),v[i]);
if(it==temp.end())
temp.push_back(v[i]);
else
*it=v[i];
}
cout<<solve(0,100003)<<el;
}
int32_t main()
{
Arwa
int t=1;
//cin>>t;
for(int i=1;i<=t;i++)
{
HereWeGoAgain();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZGQgZG91YmxlCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgeWVzIGNvdXQgPDwgIllFU1xuIgojZGVmaW5lIG5vIGNvdXQgPDwgIk5PXG4iCiNkZWZpbmUgZWwgIlxuIgojZGVmaW5lIEFyd2EgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwojZGVmaW5lIGZpeCh4KSBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbih4KQojZGVmaW5lIGFsbCh2KSB2LmJlZ2luKCksdi5lbmQoKQojZGVmaW5lIGRwcCh2LHZhbCkgbWVtc2V0KHYsdmFsLHNpemVvZih2KSkKI2RlZmluZSBtb2QgMWU5KzcKI2RlZmluZSBvbyAxZTkKY29uc3QgaW50IE4gPSAxZTUgKyA1OwppbnQgbjsKdmVjdG9yPGludD52LHRlbXA7CmludCBkcFtOXTsKaW50IHNvbHZlKGludCBpLGludCBqKQp7CiAgaWYoaT09bikgcmV0dXJuIDA7CiAgaW50IHQ9MCxsPTA7CiAgaW50ICZyZXQ9ZHBbal07CiAgaWYocmV0IT0tMSkgCiAgcmV0dXJuIHJldDsKICBpZihqPT0xMDAwMDMpIAogIHsKICB0PXNvbHZlKGkrMSxpKSsxOwogIGw9c29sdmUoaSsxLGopOwogIH0KICBlbHNlCiAgewogIGlmKF9fZ2NkKHRlbXBbaV0sdGVtcFtqXSkhPTEpCiAgdD1zb2x2ZShpKzEsaSkrMTsKICBsPXNvbHZlKGkrMSxqKTsKICB9CiAgcmV0dXJuIHJldD1tYXgodCxsKTsKfQp2b2lkIEhlcmVXZUdvQWdhaW4oKQp7CiAgIGNpbj4+bjsKICAgdi5yZXNpemUobik7CiAgIGRwcChkcCwtMSk7CiAgIGZvcihpbnQgaT0wO2k8bjtpKyspIGNpbj4+dltpXTsKICAgZm9yKGludCBpPTA7aTx2LnNpemUoKTtpKyspCiAgIHsKICAgICBhdXRvIGl0PWxvd2VyX2JvdW5kKGFsbCh0ZW1wKSx2W2ldKTsKICAgICBpZihpdD09dGVtcC5lbmQoKSkKICAgICAgdGVtcC5wdXNoX2JhY2sodltpXSk7CiAgICAgIGVsc2UKICAgICAgKml0PXZbaV07CiAgIH0KICAgY291dDw8c29sdmUoMCwxMDAwMDMpPDxlbDsKfQppbnQzMl90IG1haW4oKSAKewogICAgQXJ3YQogICAgaW50IHQ9MTsKICAgIC8vY2luPj50OwogICAgZm9yKGludCBpPTE7aTw9dDtpKyspCiAgICB7CiAgICBIZXJlV2VHb0FnYWluKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=