package main
import (
"fmt"
)
func main() {
num := 0
for {
n, _ := fmt.Scan(&num)
if n == 0 {
break
} else {
arr := make([]int, num)
for i:=0; i<num; i++ {
fmt.Scan(&arr[i])
}
// 参考快排做法
less := -1 // 代表<1 区域到最右边界
more := num // 代表>1 区域到最左边界
i := 0
for i<more {
if arr[i] < 1 { // 小于1,交换less,i位置,保证less区域内均小于1
less++
arr[less], arr[i] = arr[i], arr[less]
i++
} else if arr[i] > 1 { // 大于1,交换more,i位置,保证more区域内大于1
more--
arr[i], arr[more] = arr[more], arr[i]
} else { // 等于1,不做任何操作。小于1,大于1都调整好了,等于1也就调整好了
i++
}
}
for i:=0; i<len(arr); i++ {
if i== len(arr)-1 {
fmt.Println(arr[i])
} else {
fmt.Printf("%d ", arr[i])
}
}
}
}
}