A. United We Stand

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

Given an array a� of length n�, containing integers. And there are two initially empty arrays b� and c�. You need to add each element of array a� to exactly one of the arrays b� or c�, in order to satisfy the following conditions:

  • Both arrays b� and c� are non-empty. More formally, let lb�� be the length of array b�, and lc�� be the length of array c�. Then lb,lc≥1��,��≥1.
  • For any two indices i� and j� (1≤i≤lb,1≤j≤lc1≤�≤��,1≤�≤��), cj�� is not a divisor of bi��.

Output the arrays b� and c� that can be obtained, or output −1−1 if they do not exist.

Input

Each test consists of multiple test cases. The first line contains a single integer t� (1≤t≤5001≤�≤500) --- the number of test cases. The description of the test cases follows.

The first line of each test case contains a single integer n� (2≤n≤1002≤�≤100) --- the length of array a�.

The second line of each test case contains n� integers a1,a2,...,an�1,�2,...,�� (1≤ai≤1091≤��≤109) --- the elements of array a�.

Output

For each test case, output a single integer −1−1 if a solution does not exist.

Otherwise, in the first line, output two integers lb�� and lc�� --- the lengths of arrays b� and c� respectively.

In the second line, output lb�� integers b1,b2,...,blb�1,�2,...,��� --- the elements of array b�.

In the third line, output lc�� integers c1,c2,...,clc�1,�2,...,��� --- the elements of array c�.

If there are multiple solutions, output any of them. You can output the elements of the arrays in any order.

Example

input

Copy

复制代码

5

3

2 2 2

5

1 2 3 4 5

3

1 3 5

7

1 7 7 2 9 1 4

5

4 8 12 12 4

output

Copy

复制代码
-1
3 2
1 3 5 
2 4 
1 2
1 
3 5 
2 5
1 1 
2 4 7 7 9 
3 2
4 8 4 
12 12 

Note

In the first test case, a solution does not exist.

In the second test case, we can obtain b=[1,3,5]�=[1,3,5] and c=[2,4]�=[2,4]. Then elements 22 and 44 do not divide elements 1,31,3 and 55.

In the fifth test case, we can obtain b=[4,8,4]�=[4,8,4] and c=[12,12]�=[12,12].

解题说明:水题,对数列排序,只要让数列a中的最小值放入数列b,其他值都放入数列c中就可以,前提是数列a不是同一个数。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

int main()
{
	int t;
	cin >> t;
	while (t--)
	{
		int n;
		cin >> n;
		int a[n];
		for (int i = 0; i < n; i++)
		{
			cin >> a[i];
		}
		sort(a, a + n);
		if (a[0] == a[n - 1])
		{
			cout << -1 << endl;
		}
		else
		{
			int i = 1;
			while (a[i] == a[0])
			{
				i++;
			}
			cout << i << ' ' << n - i << endl;
			for (int j = 0; j < i; j++)
			{
				cout << a[j] << ' ';
			}
			cout << endl;
			for (int j = i; j < n; j++)
			{
				cout << a[j] << ' ';
			}
			cout << endl;
		}
	}
	return 0;
}
相关推荐
RTC老炮15 分钟前
webrtc弱网-AcknowledgedBitrateEstimatorInterface类源码分析与算法原理
网络·算法·webrtc
Antonio9151 小时前
【图像处理】常见图像插值算法与应用
图像处理·算法·计算机视觉
夜晚中的人海1 小时前
【C++】使用双指针算法习题
开发语言·c++·算法
艾莉丝努力练剑1 小时前
【C++STL :stack && queue (三) 】优先级队列的使用以及底层实现
linux·开发语言·数据结构·c++·stl
im_AMBER3 小时前
数据结构 06 线性结构
数据结构·学习·算法
earthzhang20215 小时前
【1028】字符菱形
c语言·开发语言·数据结构·c++·算法·青少年编程
papership5 小时前
【入门级-算法-3、基础算法:二分法】
数据结构·算法
hjlgs5 小时前
Linux中双向链表介绍
数据结构·链表
通信小呆呆5 小时前
收发分离多基地雷达椭圆联合定位:原理、算法与误差分析
算法·目标检测·信息与通信·信号处理
earthzhang20217 小时前
第3讲:Go垃圾回收机制与性能优化
开发语言·jvm·数据结构·后端·性能优化·golang