#include using namespace std; set factors; vector prime; vector fact; void find_factors(long x) { while(x%2==0) { prime.push_back(2); x=x/2; } for(int i=3;i<=sqrt(x);i+=2) { while(x%i==0) { prime.push_back(i); x=x/i; } } if(x>2) prime.push_back(x); int l1=prime.size(); for(int i=0;i::iterator itr; for(itr=factors.begin();itr!=factors.end();itr++) { fact.push_back(*itr); } } int max(int a,int b) { return (a>b)?a:b; } long break_stick(long x) { find_factors(x); long s=fact.size(); sort(fact.begin(),fact.end(),greater()); long dp[s]; for(int i=0;i a) { int l=a.size(); long sum=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; }