小苯的数字排序
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小苯有 n 个数字 a_1, a_2, \dots, a_n,他希望将这些数字按照以下规则排序:
{\hspace{20pt}}_\texttt{1.}\,所有偶数排在所有奇数前面;
{\hspace{20pt}}_\texttt{2.}\,在规则 1 的基础上,偶数与偶数之间、奇数与奇数之间,都按照数值从小到大的顺序排列。
\hspace{15pt}请你帮他排出一个合理的顺序吧。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 10^5\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}第一行一个正整数 n\left(1 \leqq n \leqq 2 \times 10^5\right) 表示数字的个数。
\hspace{15pt}第二行 n 个正整数 a_1, a_2, \dots, a_n\left(1 \leqq a_i \leqq 10^9\right),表示小苯的 n 个数字。
\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 2 \times 10^5

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行输出 n 个数字,表示按小苯的要求排好序的结果。
示例1

输入

复制
2
5
1 2 3 4 6
3
1 1 2

输出

复制
2 4 6 1 3
2 1 1

说明

\hspace{15pt}对于第一组测试数据,偶数集合为 \{2, 4, 6\},奇数集合为 \{1, 3\}。偶数内部升序排列为 \{2, 4, 6\},奇数内部升序排列为 \{1, 3\}。根据规则,偶数在前,奇数在后,拼接得到最终结果:\{2, 4, 6, 1, 3\}