小红的双排列构造
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\,\,\,\,\,\,\,\,\,小红希望你构造一个长度为 2\times n 的双排列,满足:恰好有 k 个长度为 n 的区间为排列。你能帮帮她吗?

\,\,\,\,\,\,\,\,\,长度为 n排列是由 1n 中的 n 个不同整数、按任意顺序组成的数组,其中每个整数恰好出现一次。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是一个排列(数组中的 2 出现了两次),[1,3,4] 也不是一个排列(长度为 3 但数组中有 4)。
\,\,\,\,\,\,\,\,\,定义双排列为两个长度为 n 的排列打乱顺序后得到的数组,或者说是由 1 到 n 中的 n 个不同整数、按任意顺序组成的数组,其中每个整数恰好出现两次。

输入描述:

\,\,\,\,\,\,\,\,\,在一行上输入两个整数n,k \left( 1\leq n \leq 10^5;\ 0\leq k \leq n+1 \right) 代表要求构造的双排列长度及限制。

输出描述:

\,\,\,\,\,\,\,\,\,如果无法构造出符合要求的双排列,直接在一行上输出 -1 ;否则,在一行上输出 2\times n 个整数,代表构造的双排列。
\,\,\,\,\,\,\,\,\,如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
3 4

输出

复制
1 2 3 1 2 3

说明

\,\,\,\,\,\,\,\,\,以下区间为排列:[1,3][2,4][3,5][4,6]
示例2

输入

复制
4 1

输出

复制
3 4 3 1 2 2 4 1

说明

\,\,\,\,\,\,\,\,\,以下区间为排列:[2,5]