val m = 16
val a = 5
val c = 1
val X0 = 10
def ran(n: Int, X: Int) : Set[Int] = n match {
case 0 => Set()
case n => {
val X_new = (a * X + c) % m
Set(X) ++ ran(n - 1, X_new)
}
}
for (i <- 0 to 16) {
val l = ran(16, i)
println(l.size.toString + " " + l.toString)
}