#include #include #include #include #include int main() { int n; const int MAX = 1000000; std::vector v(MAX + 1), v2(MAX + 1); std::set s; std::cin >> n; for (int i = 0; i < n; i++) { int value; std::cin >> value; v[value]++; s.insert(value); } int max = *std::max_element(s.begin(), s.end()), min = *std::min_element(s.begin(), s.end()); for (int val : s) { //std::cout << val << std::endl; v2[val] = std::max(1, v2[val]); for (int i = 2; val * i <= max; i++) { if (v[val * i] == 1) { v2[val * i] = std::max(v2[val] + 1, v2[val * i]); } } } //for (int i = 0; i <= max; i++) { // if (v2[i] > 0) { // std::cout << v2[i] << std::endl; // } //} std::cout << *std::max_element(v2.begin(), v2.end()) << std::endl; return 0; }