C. Isamatdin and His Magic Wand!

time limit per test

2 seconds

memory limit per test

256 megabytes

Isamatdin has n toys arranged in a row. The i-th toy has an integer ai. He wanted to sort them because otherwise, his mother would scold him.

However, Isamatdin never liked arranging toys in order, so his friend JahonaliX gave him a magic wand to help. Unfortunately, JahonaliX made a small mistake while creating the wand.

But Isamatdin couldn't wait any longer and decided to use the broken wand anyway. The wand can only swap two toys if their integers have different parity (one is even, the other is odd). In other words, you can swap toys in positions (i,j) only if aimod2≠ajmod2, where mod --- is the remainder of integer division.

Now he wants to know the lexicographically smallest∗ arrangement he can achieve using this broken wand.

∗A sequence p is lexicographically smaller than a sequence q if there exists an index i such that pj=qj for all j<i, and pi<qi.

Input

Each test contains multiple test cases. The first line contains the number of test cases t (1≤t≤104). The description of the test cases follows.

The first line of each test case contains a single integer n (1≤n≤2⋅105) --- the number of toys.

The second line of each test case contains n integers a1,a2,...,an (1≤ai≤109) --- the integers of the toys.

It is guaranteed that the sum of n over all test cases does not exceed 2⋅105.

Output

For each test case, output n integers --- the lexicographically smallest sequence that can be obtained using the described operation.

Example

Input

Copy

复制代码

7

4

2 3 1 4

5

3 2 1 3 4

4

3 7 5 1

2

1000000000 2

3

1 3 5

5

2 5 3 1 7

4

2 4 8 6

Output

Copy

复制代码
1 2 3 4 
1 2 3 3 4 
3 7 5 1 
1000000000 2 
1 3 5 
1 2 3 5 7 
2 4 8 6 

Note

In the first test case, we can swap positions (1,3) and then (2,3).

In the second test case, we can swap positions (1,2), (1,3), and then (2,3).

In the third and fourth test cases, we can't swap any positions because all toy integers have the same parity.

解题说明:此题其实就判断数列中是否同时存在奇数和偶数,如果都存在就能排序,否则无法排序。

cpp 复制代码
#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
using namespace std;
int main() 
{
	int q; 
	cin >> q;
	while (q--)
	{
		int n; 
		cin >> n;
		int a[n + 1] = { 0 };
		int f1 = 0, f2 = 0;
		for (int i = 0; i < n; i++) 
		{
			cin >> a[i];
			if (a[i] % 2 == 0)
			{
				f1 = 1;
			}
			else
			{
				f2 = 1;
			}
		}
		if (f1 && f2)
		{
			sort(a, a + n);
		}
		for (int i = 0; i < n; i++)
		{
			cout << a[i] << ' ';
		}
		cout << endl;
	}
	return 0;
}
相关推荐
2的n次方_7 分钟前
CANN Ascend C 编程语言深度解析:异构并行架构、显式存储层级与指令级精细化控制机制
c语言·开发语言·架构
iAkuya23 分钟前
(leetcode)力扣100 62N皇后问题 (普通回溯(使用set存储),位运算回溯)
算法·leetcode·职场和发展
近津薪荼23 分钟前
dfs专题5——(二叉搜索树中第 K 小的元素)
c++·学习·算法·深度优先
xiaoye-duck25 分钟前
吃透 C++ STL list:从基础使用到特性对比,解锁链表容器高效用法
c++·算法·stl
松☆28 分钟前
CANN与大模型推理:在边缘端高效运行7B参数语言模型的实践指南
人工智能·算法·语言模型
java干货38 分钟前
为什么 “File 10“ 排在 “File 2“ 前面?解决文件名排序的终极算法:自然排序
开发语言·python·算法
_F_y39 分钟前
C语言重点知识总结(含KMP详细讲解)
c语言·开发语言
皮皮哎哟1 小时前
数据结构:嵌入式常用排序与查找算法精讲
数据结构·算法·排序算法·二分查找·快速排序
程序员清洒1 小时前
CANN模型剪枝:从敏感度感知到硬件稀疏加速的全链路压缩实战
算法·机器学习·剪枝
vortex51 小时前
几种 dump hash 方式对比分析
算法·哈希算法