变换序列
描述
对于N个整数0,1,…,N-1,一个变换序列T可以将i变成Ti,其中:Ti∈{0,1,…,N-1}且 {Ti}={0,1,…,N-1}。 x,y∈{0,1,…,N-1},定义x和y之间的距离D(x,y)=min{|x-y|,N-|x-y|}。给定每个i和Ti之间的距离D(i,Ti),你需要求出一个满足要求的变换序列T。如果有多个满足条件的序列,输出其中字典序最小的一个。
说明:对于两个变换序列S和T,如果存在p<N,满足:对于i=0,1,…,p-1,Si=Ti且Sp<Tp,我们称S比T字典序小。
格式
输入格式
输入的第一行为一个整数N(N<=10000),表示序列的长度。
接下来的一行为N个整数Di,其中:Di表示i和Ti之间的距离。
输出格式
如果至少存在一个满足要求的变换序列T,则输出一行为N个整数,表示你计算得到的字典序最小的T;否则输出“No Answer”(不含引号)。
注意:输出文件中相邻两个数字之间用一个空格分开,行末不包含多余空格。
样例1
样例输入1
5
1 1 2 2 1
样例输出1
1 2 4 0 3
限制
每个测试点1s。
来源
NOI2009 Day 1