package main
import (
"fmt"
)
func main() {
row := 0
for {
n, _ := fmt.Scan(&row)
if n == 0 {
break
} else {
arr := make([]int, row)
for i := 0; i < len(arr); i++ {
fmt.Scan(&arr[i])
}
process(arr)
for i:=0; i<len(arr); i++ {
fmt.Printf("%d ", arr[i])
}
}
}
}
func process(arr []int) {
// 记录冲突位置所在
eve, odd := 0, 1
n := len(arr)
// 每次交换最后一个位置,只看最后一个值,就可以避免交换的值影响查找范围
for odd < n && eve < n {
if arr[n-1] % 2 == 1 {
arr[n-1], arr[odd] = arr[odd], arr[n-1]
odd+=2
} else {
arr[n-1], arr[eve] = arr[eve], arr[n-1]
eve+=2
}
}
}
// 2个队列,接收奇数,偶数,依次放入
// func process(arr []int) {
// odd := []int{}
// eve := []int{}
// for i := 0; i < len(arr); i++ {
// if arr[i]%2 == 0 {
// odd = append(odd, arr[i])
// } else {
// eve = append(eve, arr[i])
// }
// }
// k := 0
// i, j := 0, 0
// for i < len(odd) && j < len(eve) {
// arr[k], arr[k+1] = odd[i], eve[j]
// k += 2
// i++
// j++
// }
// for i < len(odd) {
// arr[k] = odd[i]
// i++
// k++
// }
// for j < len(eve) {
// arr[k] = eve[j]
// j++
// k++
// }
// }