#arc144c. [arc144_c]K Derangement

[arc144_c]K Derangement

题目描述

给定正整数 NNKK,找到满足以下条件的正整数序列 A=(A1,A2,,AN)A = (A_1, A_2, \ldots, A_N) 的字典序最小排列:

  • 对于所有 ii1iN1 \leq i \leq N),满足 lvertAiirvertgeqK\\lvert A_i - i\\rvert \\geq K

如果不存在这样的排列,则输出 -1

什么是字典序?

下面是一个确定不同序列 SSTT 的字典序的算法。

在下面,我们用 SiS_i 表示 SS 的第 ii 个元素。此外,如果 SS 在字典上小于 TT,我们将这个事实表示为 SltTS \\lt T;如果 SS 在字典上大于 TT,我们将这个事实表示为 SgtTS \\gt T

  1. LLSSTT 的长度中较小的那个。对于每个 i=1,2,dots,Li=1,2,\\dots,L,我们检查 SiS_iTiT_i 是否相等。
  2. 如果存在 ii 使得 SineqTiS_i \\neq T_i,令 jj 是最小的这样的 ii。然后,我们比较 SjS_jTjT_j。如果 SjS_jTjT_j 小(作为数字),我们确定 SltTS \\lt T 并停止;如果 SjS_jTjT_j 大,我们确定 SgtTS \\gt T 并停止。
  3. 如果不存在 ii 使得 SineqTiS_i \\neq T_i,我们比较 SSTT 的长度。如果 SSTT 短,我们确定 SltTS \\lt T 并停止;如果 SSTT 长,我们确定 SgtTS \\gt T 并停止。

约束条件

  • 2N3×1052 \leq N \leq 3 \times 10^5
  • 1KN11 \leq K \leq N - 1

输入

从标准输入读入输入数据,输入格式如下:

NN KK

输出

输出满足条件的字典序最小排列 A=(A1,A2,,AN)A = (A_1, A_2, \ldots, A_N),输出格式如下:

A1A_1 A2A_2 \ldots ANA_N

如果不存在这样的排列,则输出 -1


示例 1

3 1

示例 1 输出

2 3 1

满足条件的排列有两种:(2,3,1)(2, 3, 1)(3,1,2)(3, 1, 2)。例如,对于 (2,3,1)(2, 3, 1),我们有:

  • lvertA11rvert=1geqK\\lvert A_1 - 1\\rvert = 1 \\geq K
  • lvertA22rvert=1geqK\\lvert A_2 - 2\\rvert = 1 \\geq K
  • lvertA33rvert=2geqK\\lvert A_3 - 3\\rvert = 2 \\geq K

示例 2

8 3

示例 2 输出

4 5 6 7 8 1 2 3

示例 3

8 6

示例 3 输出

-1