class CHummingNumbers { def next(c:Int):Int = (BigInt(30).pow(c) % c).intValue match { case 0 => c case _ => next(c+1) } def take(n:Int,c:Int):List[Int] = n match { case 0 => List() case _ => next(c) match { case v => v::take(n-1,v+1) } } def take(n:Int):List[Int] = take(n,1) } object HummingNumbers { def main(args:Array[String]):Unit = { try { val n:Int = args.length match { case 1 => args(0).toInt case _ => 100 } println((new CHummingNumbers).take(n).mkString("\n")) } catch { case e => e.printStackTrace } } }