时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld
题目描述

给定一个长为

的数组

,保证

为偶数。请构造两个长为

的
排列 
,使得:

对于每个
)
,都有

或

。

至少有

个
)
,满足

。

至少有

个
)
,满足

。

请你构造两个合法的排列

,或输出

,代表这不可能。
【名词解释】

长度为

的
排列:由

这

个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,

是一个长度为

的排列,而

和

都不是排列,因为前者存在重复元素,后者包含了超出范围的数。
输入描述:
第一行输入一个整数
。
第二行输入
个整数
,代表数组
。
输出描述:

如果不存在合法的两个排列,请输出

;否则输出两行,每行

个整数,代表所构造的排列

。

如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1
输出
复制
7 6 5 3 1 8 2 4
6 2 7 3 8 1 4 5