Ouroboros sequence

0.6 The ouroboros is an ancient symbol depicting a snake eating its own
tail.

We will call a sequence of n numbers x₁ …x_(n) an ouroboros if two
things happen:

1.  For every 1 ≤ i < n, x_(i) and x_(i + 1) differ by one.

2.  x_(n) and x₁ also differ by one.

For instance, 3 4 5 4 3 2 1 2 is an ouroboros sequence, while 3 4 5 4 3
is not.

0.4

[image]

Given a sequence of numbers, can you decide if they can be rearranged to
form an ouroboros sequence?

Input

Input consists of several cases, each with n, followed by x₁ …x_(n).
Assume 2 ≤ n ≤ 10⁵, and that each x_(i) is an integer number between 0
and 1000.

Output

Print one line for each case. If it is not possible to build an
ouroboros sequence from the given numbers, print “NO”. Otherwise, print
“YES” followed by the lexicographically largest ouroboros sequence.

Problem information

Author: Joan Alemany

Generation: 2026-01-25T12:12:17.462Z

© Jutge.org, 2006–2026.
https://jutge.org
