C0371 [NOI2009Day1-A]变换序列

内存限制:256 MB 时间限制:1000 ms

题目描述

对于$N$个整数$0, 1, ......,N-1$,一个变换序列$T$可以将$i$变成$T_i$,其中$T_i \in \{ 0,1,...,N-1 \}$且$\bigcup_{i=0}^{N-1} \{ T_i \}=\{ 0,1,...,N-1 \}$。$\forall x,y \in \{ 0, 1, ..., N-1 \}$ ,定义$x$和$y$之间的距离$D(x,y)=\{min|x-y|,N-|x-y|\}$。给定每个$i$和$T_i$之间的距离$D(i,T_i)$,你需要求出一个满足要求的变换序列$T$。如果有多个满足条件的序列,输出其中字典序最小的一个。

说明:对于两个变换序列$S$和$T$,如果存在$p<N$,满足对于$i=0,1,......p-1,S_i=T_i$且$S_p<T_p$,我们称$S$比$T$字典序小。

输入格式

第一行包含一个整数$N$,表示序列的长度。接下来的一行包含$N$个整数$D_i$,其中$D_i$表示$i$和$T_i$之间的距离。

输出

如果至少存在一个满足要求的变换序列$T$,则输出文件中包含一行$N$个整数,表示你计算得到的字典序最小的$T$;否则输出”No Answer”(不含引号)。注意:输出文件中相邻两个数之间用一个空格分开,行末不包含多余空格。

样例

样例输入 1

5 1 1 2 2 1

样例输出 1

1 2 4 0 3

提示

【数据规模和约定】

20%的数据中$N≤50$;
60%的数据中$N≤500$;
100%的数据中$N≤10000$。