#abc276c. [abc276_c]Previous Permutation

[abc276_c]Previous Permutation

题目描述

给定一个排列 P=(P1,dots,PN)P = (P_1, \\dots, P_N),其中 (P1,dots,PN)neq(1,dots,N)(P_1, \\dots, P_N) \\neq (1, \\dots, N)

假设 PP 是所有 (1,dots,N)(1, \\dots, N) 的排列中第 KK 小的,求第 (K1)(K-1) 小的排列。

什么是排列?

对于 (1,dots,N)(1, \\dots, N) 的一个排列,是将 (1,dots,N)(1, \\dots, N) 进行重新排列得到的序列。

什么是字典序?

对于长度为 NN 的序列,A=(A1,dots,AN)A = (A_1, \\dots, A_N)B=(B1,dots,BN)B = (B_1, \\dots, B_N),当且仅当存在 1leqileqN1 \\leq i \\leq N 满足以下条件时,AA 被称为严格小于 BB 的字典序。

  • (A1,ldots,Ai1)=(B1,ldots,Bi1).(A_{1},\\ldots,A_{i-1}) = (B_1,\\ldots,B_{i-1}).
  • Ai<BiA_i < B_i.

约束条件

  • 2leqNleq1002 \\leq N \\leq 100
  • 1leqPileqN,(1leqileqN)1 \\leq P_i \\leq N \\, (1 \\leq i \\leq N)
  • PineqPj,(ineqj)P_i \\neq P_j \\, (i \\neq j)
  • (P1,dots,PN)neq(1,dots,N)(P_1, \\dots, P_N) \\neq (1, \\dots, N)
  • 输入中的所有值都是整数。

输入

输入以以下格式从标准输入给出:

NN P1P_1 ldots\\ldots PNP_N

输出

Q=(Q1,dots,QN)Q = (Q_1, \\dots, Q_N) 是所求排列。按顺序用空格分隔,将 Q1,dots,QNQ_1, \\dots, Q_N 打印在一行中。


样例输入 1

3
3 1 2

样例输出 1

2 3 1

这里给出了按字典序递增排列的 (1,2,3)(1, 2, 3) 的所有排列。

  • (1,2,3)(1, 2, 3)
  • (1,3,2)(1, 3, 2)
  • (2,1,3)(2, 1, 3)
  • (2,3,1)(2, 3, 1)
  • (3,1,2)(3, 1, 2)
  • (3,2,1)(3, 2, 1)

因此,P=(3,1,2)P = (3, 1, 2) 是第五小的,因此所求排列是第四小的 (51=4)(5 - 1 = 4),为 (2,3,1)(2, 3, 1)


样例输入 2

10
9 8 6 5 10 3 1 2 4 7

样例输出 2

9 8 6 5 10 2 7 4 3 1