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;
}
相关推荐
地平线开发者11 小时前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮12 小时前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者12 小时前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考12 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx16 小时前
CART决策树基本原理
算法·机器学习
Wect16 小时前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript
颜酱17 小时前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法
Gorway1 天前
解析残差网络 (ResNet)
算法
拖拉斯旋风1 天前
LeetCode 经典算法题解析:优先队列与广度优先搜索的巧妙应用
算法
Wect1 天前
LeetCode 207. 课程表:两种解法(BFS+DFS)详细解析
前端·算法·typescript