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;
}
相关推荐
Ada's8 小时前
【计算机基础系列】003:Python数据结构
开发语言·数据结构·python
Nil20810 小时前
leetcode 118杨辉三角
算法·leetcode·职场和发展
wanderist.12 小时前
线性筛法详解:从筛质数到欧拉函数、Möbius 函数与约数函数
java·数据结构·算法
All for pursuit.12 小时前
【设计-1】208.实现Trie (前缀树)
数据结构·c++·算法·leetcode
weixin_3077791312 小时前
C++代码实现MATLAB中的crossval函数功能
开发语言·c++·算法·matlab
青少儿编程课堂12 小时前
背包问题(0/1 背包与完全背包)解题精讲——动态规划入门
c++·python·算法·bfs·信息学竞赛
光影少年13 小时前
为什么 JavaScript 中 0.1 + 0.2 !== 0.3,如何让其相等?
前端·javascript·算法
Escalating_xu13 小时前
【C 语言】深入理解指针(5):sizeof、strlen、数组名语义与指针笔试题全解析
java·c语言·开发语言
HEJOO913 小时前
Linux 设备驱动系列——使用全局工作队列
java·linux·算法
Code_Solitude13 小时前
c语言:递归
java·c语言·算法