import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static long getSmallestPrime(long n){ if(n%2 == 0){ return 2; }else if(n%3 == 0){ return 3; }else if(n % 5 == 0){ return 5; }else if(n%7 ==0){ return 7; }else if(n%11 == 0){ return 11; }else{ long m = (long)Math.sqrt(n); //System.out.println("m="+m); for(int i = 13;i<=m;i+=2){ if(n%i == 0){ //System.out.println("i="+i); return i; } } return n; } } static long maxPrime; static long getLargestPrime(long n,long prev){ if(n<=1){ return prev; } long sm = getSmallestPrime(n); //System.out.println("sm="+sm); long glp = getLargestPrime(n/sm,n); return glp; } static long getSequence(long a){ long sum = 0; long lp = getLargestPrime(a,a); long prev = lp; while(a!=1){ //System.out.println("a="+a+";lp="+lp+";prev="+prev+";sum="+sum); sum += prev; a = a/lp; lp = getLargestPrime(a,a); prev *= lp; } return sum+1; } static long longestSequence(long[] a) { // Return the length of the longest possible sequence of moves. long total = 0; for(int i =0;i