D - Deportes en la Universidad

Languages: C, C++, Java, Pascal, Python, Tiger, JavaScript, Haskell, C#
Time & Memory limits: (details)

Para los próximos juegos Caribe de la Universidad de La Habana, la Facultad de Matemática y Computación desea formar dos equipos de atletismo, uno para Matemática y otro para Computación. Los responsables de la FEU en la facultad quieren saber si existe la posibilidad de que estos dos equipos estén balanceados, es decir, si es posible separar los candidatos de la facultad en dos equipos con igual potencial, no interesa si un atleta de matemática compita por computación o viceversa. Tampoco importa que los dos equipos tengan diferente cantidad de competidores, no obstante, cada atleta pertenecerá a exactamente un equipo.

Se conoce que en la facultad existen atletas dispuestos a participar, una secuencia de enteros representa el potencial de cada uno y sabemos además que se cumple con . Conociendo que el potencial de un equipo es la suma del potencial de sus integrantes, determine si es posible dividir en dos equipos la secuencia tal que sus potenciales sean iguales.

Input

La primera línea contiene un único entero $N$ $(1 \leq N \leq 100000)$. La segunda línea de la entrada contiene $N$ enteros separados por espacio $x_i$ $(1 \leq x_i \leq i)$.


Output

La primera línea de la salida debe contener $\texttt{“Yes”}$ si es posible separar $X$ en dos equipos o $\texttt{“No”}$ en otro caso. De ser posible, la segunda línea contendrá una lista $S$ de $N$ enteros de forma tal que $S_i = 1$  si el $i$-ésimo atleta pertenece al equipo de Matemática o $S_i = -1$  si pertenece al equipo de Computación.

Sample test(s)

Input
4 1 2 3 4
Output
Yes -1 1 1 -1
Input
4 1 2 3 3
Output
No