object Solution { def longestSequence(a: Array[Long]): Long = { var moves = Array[Long](0) a.foreach( n => { //print(.mkString(" ")) var base = 1:Long var sums = Array[Long](0) (factors(n).reverse).foreach ( fct => { base *= fct sums = sums :+ base }) //println(factors(n).mkString("("," ",")")) moves = moves :+ (sums.sum+1); }) moves.sum // Return the length of the longest possible sequence of moves. } def factors(in:Long): Array[Long] = { var ret = new Array[Long](0) var rem = in var fct = 2 while (rem > 1) { while (rem % fct == 0 ){ ret = ret :+ fct.toLong rem /= fct } fct += 1 } ret } def main(args: Array[String]) { val sc = new java.util.Scanner (System.in); var n = sc.nextInt(); var a = new Array[Long](n); for(a_i <- 0 to n-1) { a(a_i) = sc.nextLong(); } val result = longestSequence(a); println(result) } }