#include using namespace std; long helper(map& mapping, long a) { if (mapping.find(a) == mapping.end()) { mapping[a] = 1; for (long d = 1;d <= sqrt(a);d++) { if (a % d == 0) { if (d != 1) { long ans = helper(mapping, a / d); mapping[a] = max(mapping[a], 1 + d * ans); //cout << a << " dividing into " < a) { // Return the length of the longest possible sequence of moves. map mapping; mapping[1] = 1; long ans = 0; for (int i = 0;i < a.size();i++) { long tmp = helper(mapping, a[i]); // cout << tmp << endl; ans += tmp; } return ans; } int main() { int n; cin >> n; vector a(n); for(int a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; } long result = longestSequence(a); cout << result << endl; return 0; }