Educational Codeforces Round 30 |
---|

Finished |

Virtual contest is a way to take part in past contest, as close as possible to participation on time. It is supported only ICPC mode for virtual contests.
If you've seen these problems, a virtual contest is not for you - solve these problems in the archive.
If you just want to solve some problem from a contest, a virtual contest is not for you - solve this problem in the archive.
Never use someone else's code, read the tutorials or communicate with other person during a virtual contest.

brute force

data structures

dp

*2300

No tag edit access

The problem statement has recently been changed. View the changes.

×
E. Awards For Contestants

time limit per test

1 secondmemory limit per test

256 megabytesinput

standard inputoutput

standard outputAlexey recently held a programming contest for students from Berland. *n* students participated in a contest, *i*-th of them solved *a*_{i} problems. Now he wants to award some contestants. Alexey can award the students with diplomas of three different degrees. Each student either will receive one diploma of some degree, or won't receive any diplomas at all. Let *cnt*_{x} be the number of students that are awarded with diplomas of degree *x* (1 ≤ *x* ≤ 3). The following conditions must hold:

- For each
*x*(1 ≤*x*≤ 3)*cnt*_{x}> 0; - For any two degrees
*x*and*y**cnt*_{x}≤ 2·*cnt*_{y}.

Of course, there are a lot of ways to distribute the diplomas. Let *b*_{i} be the degree of diploma *i*-th student will receive (or - 1 if *i*-th student won't receive any diplomas). Also for any *x* such that 1 ≤ *x* ≤ 3 let *c*_{x} be the maximum number of problems solved by a student that receives a diploma of degree *x*, and *d*_{x} be the minimum number of problems solved by a student that receives a diploma of degree *x*. Alexey wants to distribute the diplomas in such a way that:

- If student
*i*solved more problems than student*j*, then he has to be awarded not worse than student*j*(it's impossible that student*j*receives a diploma and*i*doesn't receive any, and also it's impossible that both of them receive a diploma, but*b*_{j}<*b*_{i}); -
*d*_{1}-*c*_{2}is maximum possible; - Among all ways that maximize the previous expression,
*d*_{2}-*c*_{3}is maximum possible; - Among all ways that correspond to the two previous conditions,
*d*_{3}-*c*_{ - 1}is maximum possible, where*c*_{ - 1}is the maximum number of problems solved by a student that doesn't receive any diploma (or 0 if each student is awarded with some diploma).

Help Alexey to find a way to award the contestants!

Input

The first line contains one integer number *n* (3 ≤ *n* ≤ 3000).

The second line contains *n* integer numbers *a*_{1}, *a*_{2}, ..., *a*_{n} (1 ≤ *a*_{i} ≤ 5000).

Output

Output *n* numbers. *i*-th number must be equal to the degree of diploma *i*-th contestant will receive (or - 1 if he doesn't receive any diploma).

If there are multiple optimal solutions, print any of them. It is guaranteed that the answer always exists.

Examples

Input

4

1 2 3 4

Output

3 3 2 1

Input

6

1 4 3 1 1 2

Output

-1 1 2 -1 -1 3

Codeforces (c) Copyright 2010-2024 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Apr/22/2024 13:28:20 (j1).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|