#include #include #include #include #include using namespace std; void getDivisors(long long int n,vector& divisors) { for (long long int i=2; i<=sqrt(n); i++) { if (n%i==0 && i!=n) { if (n/i == i) { divisors.emplace_back(i); } else { divisors.emplace_back(i); divisors.emplace_back(n / i); } } } } long long int maxValue(long long int pieceSize,long long int pieces,map>& m){ //cout<<"pieceSize and pieces "< divisor; divisor.emplace_back(1); getDivisors(pieceSize,divisor); //cout<maxPath){ maxPath=path; } } m[pieceSize][pieces]=maxPath+pieces; return maxPath+pieces; } int main(){ long long int n=0; cin>>n; vector sticks(n); for(long long int i=0;i>sticks[i]; } map> m; long long int path=0; for(long long int i=0;i