#include #define INF INT_MAX/3 #define MAX 1000000 using namespace std; int n; int A[MAX + 1]; int L[MAX]; int lis() { L[0] = A[0]; int length = 1; for (int i = 1; i < n; ++i) { if (L[length - 1] < A[i] && A[i] % L[length - 1] == 0) { L[length++] = A[i]; } else { *lower_bound(L, L + length, A[i]) = A[i]; } } return int(lower_bound(L, L+length, INF) - L); } int main() { cin >> n; for (int i = 0; i < n; ++i) { cin >> A[i]; } sort(begin(A), begin(A) + n); cout << lis() << endl; return 0; };