#AG0403008. 第N个排列

第N个排列

题目描述

给定两个整数 NNKK,求将所有由整数 1K1 \sim K 组成的排列按照字典序从小到大排序后排在第 NN 位的排列。

本题中,排列的编号从 00 开始,即:排列 {1,2,,K}\{ 1, 2, \ldots, K \} 是第 00 个排列,排列 {K,K1,,2,1}\{ K, K-1, \ldots, 2, 1 \} 是第 N!1N! - 1 个排列。

由于 NN 可能很大,所以我们用 KK 个整数 S1,S2,,SKS_1, S_2, \ldots, S_K 来表示 NN,规定 NN 的计算方式如下:

n=i=1KSi×(Ki)!n = \sum\limits_{i=1}^K S_i \times (K - i)!

输入格式

第一行,一个整数 K(1k105)K(1 \le k \le 10^5)

第二行,KK 个整数 S1,S2,,SKS_1, S_2, \ldots, S_K

输出格式

输出共一行,包含 KK 个整数,两两之间以一个空格分隔,表示这个排列。

样例

3
2 1 0
3 2 1
3
1 0 0
2 1 3
4
2 1 1 0
3 2 4 1

说明/提示

数据规模与约定

  • 对于 20%20\% 的数据,n10n \le 10
  • 对于 50%50\% 的数据,n1000n \le 1000
  • 对于 100%100\% 的数据,1n1051 \le n \le 10^5,且数列 p1,p2,,pnp_1, p_2, \ldots, p_n 是一个大小为 nn 的排列