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;
}
相关推荐
v_34836087623 小时前
Android native端 堆栈打印
android·算法
residual_fan3 小时前
【学术论文】航空发动机故障诊断智能体:基于持续对比强化学习的动态优化方法
人工智能·算法·数据挖掘·数据分析
GreenTea3 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
深圳满意度咨询4 小时前
医院满意度数字化测评系统:从数据采集到智能决策的技术实践
算法
xiangyun615 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun615 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
OKkankan6 小时前
LangChain 能力详解!:输出解析、RAG、向量数据库与 Retriever 检索器
数据结构·python·langchain·ai应用
蓝速科技6 小时前
便民服务大厅 AI 数字人一体机场景适配与落地指南丨蓝速科技
大数据·网络·数据结构·人工智能·自然语言处理·数据分析·运维开发
302wanger7 小时前
推荐下我的两个AI信息源
算法
索尔~古德曼7 小时前
CF——错题的集合
算法