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])
                }
            }
        }
    }
}