|Educational Codeforces Round 30|
Alexey 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:
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:
Help Alexey to find a way to award the contestants!
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 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.
1 2 3 4
3 3 2 1
1 4 3 1 1 2
-1 1 2 -1 -1 3