import java.util.Scanner
def swap[T](i: Int, j: Int, A: Array[T]) = {val t = A(i); A(i) = A(j); A(j) = t}
def factor[T](A: Array[T], leap: Int) {
if(leap < A.length){
for(i <- leap until A.length){
swap[T](leap, i, A)
factor(A, leap+1)
swap[T](leap, i, A)
}
}else{
println(A.mkString(", "))
}
}
var flag: Boolean = true
val sc = new Scanner(System.in);
while(flag){
val A = new Array[Int](sc.nextInt)
for(i <- 0 until A.length) A(i) = i + 1
if(A.length == 0) flag = false else factor[Int](A, 0)
}
def sort(A: Array[Int]) {
if(A.length > 1){
val p = A.take(A.length/2)
val q = A.takeRight(A.length - A.length/2)
sort(p); sort(q)
var i = 0; var j = 0
while(i < p.length && j < q.length){
if (p(i) < q(j)) {A(i+j) = p(i); i += 1}
else {A(i+j) = q(j); j += 1}
}
while(i < p.length) {A(i+j) = p(i); i += 1}
while(j < q.length) {A(i+j) = q(j); j += 1}
}
}
val A = Array[Int](4, 1, 6, 7, 0, 2)
sort(A)
println(A.mkString(", "))