TopCoder

Thumb hsnu2016
Adrien Wu
$ \begin{align} AC \times 2^9 \\ \text{New TIOJ ?} \end{align} $

User's AC Ratio

82.6% (19/23)

Submission's AC Ratio

57.1% (44/77)

Description

給定$N$,請找出一個$1$到$N$的排列$a_0,a_1,\cdots,a_{N-1}$,使得這個數列的$N$個前綴和(即$a_0,a_0+a_1,a_0+a_1+a_2,\cdots,\sum^ {N-1}_{i=0}a_i$)中恰好有除以$N$餘0、除以$N$餘1、……、除以$N$餘$N-1$的數各一個,或者判斷不存在這樣一個排列。

例如$N=2$,取數列$2,1$,則其兩個前綴和分別為$2,3$,恰好有除以2餘0、除以2餘1的數各一個。

Input Format

輸入只有一個正整數$N$,$N \leq 2\times 10^ 6$。

子任務(測資) 額外限制 分數
1 (0~7) $N \leq 8$ 10
2 (0~11) $N \leq 12$ 10
3 (12~28) $N$為$2$的冪次 10
3 (0~78) 無限制 70

Output Format

若不存在一個滿足題意的排列,輸出一行No
否則,先輸出一行Yes,並在下一行輸出一個滿足題意的排列,數字間以空格隔開。若有多組解,輸出其中一個即可。

Sample Input

#Sample Input 1
1

#Sample Input 2
2

Sample Output

#Sample Output 1
Yes
1

#Sample Output 2
Yes
2 1

Hints

Problem Source

Problem set by skylinebaby
建國中學107學年度校隊選拔:初試pF

Subtasks

For Testdata: 0 ~ 7, Score: 10
For Testdata: 0 ~ 11, Score: 10
For Testdata: 12 ~ 28, Score: 10
For Testdata: 0 ~ 78, Score: 70
No. Time Limit (ms) Memory Limit (KiB)
0 900 131072
1 900 131072
2 900 131072
3 900 131072
4 900 131072
5 900 131072
6 900 131072
7 900 131072
8 900 131072
9 900 131072
10 900 131072
11 900 131072
12 900 131072
13 900 131072
14 900 131072
15 900 131072
16 900 131072
17 900 131072
18 900 131072
19 900 131072
20 900 131072
21 900 131072
22 900 131072
23 900 131072
24 900 131072
25 900 131072
26 900 131072
27 900 131072
28 900 131072
29 900 131072
30 900 131072
31 900 131072
32 900 131072
33 900 131072
34 900 131072
35 900 131072
36 900 131072
37 900 131072
38 900 131072
39 900 131072
40 900 131072
41 900 131072
42 900 131072
43 900 131072
44 900 131072
45 900 131072
46 900 131072
47 900 131072
48 900 131072
49 900 131072
50 900 131072
51 900 131072
52 900 131072
53 900 131072
54 900 131072
55 900 131072
56 900 131072
57 900 131072
58 900 131072
59 900 131072
60 900 131072
61 900 131072
62 900 131072
63 900 131072
64 900 131072
65 900 131072
66 900 131072
67 900 131072
68 900 131072
69 900 131072
70 900 131072
71 900 131072
72 900 131072
73 900 131072
74 900 131072
75 900 131072
76 900 131072
77 900 131072
78 900 131072