#include #include #include #include #include #include #include #include #include #include #include using namespace std; #define REP(i, n) for(int i = 0; i < n; i++) #define RREP(i,n) for(int i = (n)-1; i >= 0; i--) #define FOR(i, l, r) for(int i = l; i < r; i++) #define RFOR(i, l,r) for(int i= (l)-1; i>= (r) ; i--) constexpr int INF = 1000000000;/* 1e+9a */ constexpr int MODULO = 1000000007; int solve(vector& p) { vector< vector > s(p.size()); REP(i, p.size()) { REP(j, p.size()) if(p[j] % p[i] == 0) s[i].push_back(j); } vector high(s.size(), 1); RREP(i, s.size()) { int higher = 1; RREP(j, s[i].size()) { if(s[s[i][j]].size()) { int tmp = 1 + high[s[i][j]]; higher = higher > tmp ? higher : tmp; } } high[i] = higher; } return *max_element(high.begin(), high.end()); } int main() { ios::sync_with_stdio(false); int n; cin >> n; vector p; REP(i, n) { int tmp; cin >> tmp; p.push_back(tmp); } sort(p.begin(),p.end()); cout << solve(p) -1 << '\n'; }