CF1684G.Euclid Guess
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Let's consider Euclid's algorithm for finding the greatest common divisor, where t is a list:
<pre class="verbatim"><br></br>function Euclid(a, b):<br></br> if a < b:<br></br> swap(a, b)<br></br><br></br> if b == 0:<br></br> return a<br></br><br></br> r = reminder from dividing a by b<br></br> if r > 0:<br></br> append r to the back of t<br></br><br></br> return Euclid(b, r)<br></br>
There is an array p of pairs of positive integers that are not greater than m . Initially, the list t is empty. Then the function is run on each pair in p . After that the list t is shuffled and given to you.
You have to find an array p of any size not greater than 2⋅104 that produces the given list t , or tell that no such array exists.
输入格式
The first line contains two integers n and m ( 1≤n≤103 , 1≤m≤109 ) — the length of the array t and the constraint for integers in pairs.
The second line contains n integers t1,t2,…,tn ( 1≤ti≤m ) — the elements of the array t .
输出格式
- If the answer does not exist, output −1 .
- If the answer exists, in the first line output k ( 1≤k≤2⋅104 ) — the size of your array p , i. e. the number of pairs in the answer. The i -th of the next k lines should contain two integers ai and bi ( 1≤ai,bi≤m ) — the i -th pair in p .
If there are multiple valid answers you can output any of them.
输入输出样例
输入#1
7 20 1 8 1 6 3 2 3
输出#1
3 19 11 15 9 3 7
输入#2
2 10 7 1
输出#2
-1
输入#3
2 15 1 7
输出#3
1 15 8
输入#4
1 1000000000 845063470
输出#4
-1
说明/提示
In the first sample let's consider the array t for each pair:
- (19,11) : t=[8,3,2,1] ;
- (15,9) : t=[6,3] ;
- (3,7) : t=[1] .
So in total t=[8,3,2,1,6,3,1] , which is the same as the input t (up to a permutation).
In the second test case it is impossible to find such array p of pairs that all integers are not greater than 10 and t=[7,1]
In the third test case for the pair (15,8) array t will be [7,1] .