import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static long f(long n, Map dp) { if(n==1) { return 1; } if(dp.get(n)!=null) { return dp.get(n); } long ans=0; ans=1+n*f(1,dp); for(long i=2;i<=Math.sqrt(n);++i) { if(n%i!=0) { continue; } long f1=i; long f2=n/i; ans=Math.max( ans, Math.max( 1+ ( f2*f(f1,dp) ) , 1+ ( f1*f(f2,dp) ) ) ); } dp.put(n,ans); return ans; } static long longestSequence(long[] a,int n) { // Return the length of the longest possible sequence of moves. long sum=0; Map dp=new HashMap(); //Map ans=new HashMap(); for(int i=0;i