#include using namespace std; long getMax(long value) { if(value==1) return 0; else if((value%2)!=0) return 1; else{ long y,i=2; long x,max=0; long x_res,y_res; for(i=2;i<=(value/2);i++){ if((value%i)==0){ x=value/i; if((x%2)==0||x==1){ y=i; if(max==0){ max=y*getMax(x); x_res=x; y_res=y; } if(max<(y*getMax(x))){ max=y*getMax(x); x_res=x; y_res=y; } } } } /*while(1){ x=value/i; if((x%2)==0||x==1){ y=i; break; } i++; }*/ return 1+max; //return value; } } long longestSequence(vector a) { // Return the length of the longest possible sequence of moves. long result=0; for(int i=0;i> 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; }