На днях Алексей закончил проведение соревнования по программированию для студентов из Берляндии. n студентов приняли участие в соревновании, i-й решил ai задач. Теперь необходимо наградить некоторых участников. Алексей может вручать студентам дипломы трех степеней. Каждый студент или получит один диплом какой-либо степени, или не получит диплома совсем. Пусть cntx — количество студентов, награжденные дипломом степени x (1 ≤ x ≤ 3). Должны соблюдаться следующие условия:
- Для каждого x (1 ≤ x ≤ 3) cntx > 0;
- Для любых двух степеней x и y cntx ≤ 2·cnty.
Конечно, есть множество способов распределить дипломы. Пусть bi — степень диплома, который получит i-й студент (или - 1, если i-й студент останется без диплома). Также для любого x такого, что 1 ≤ x ≤ 3, пусть cx — максимальное количество задач, решенных студентом, получившим диплом степени x, а dx — минимальное количество задач, решенных студентом, получившим диплом степени x. Алексей хочет раздать дипломы таким образом, чтобы:
- Если студент i решил больше задач, чем студент j, то он должен быть награжден не хуже студента j (невозможно, чтобы студент j получил диплом, а i — нет, и невозможно, чтобы оба получили диплом и bj < bi);
- d1 - c2 должно быть максимально;
- Среди всех способов максимизировать предыдущее выражение d2 - c3 должно быть максимально;
- Среди всех способов удовлетворить предыдущие условия d3 - c - 1 должно быть максимально, где c - 1 — максимальное количество задач, решенных студентом, не получившим диплома (или 0, если все студенты получили диплом).
Помогите Алексею найти способ наградить участников!
Выходные данные
Выведите n чисел. i-е число должно равняться степени диплома, который получит i-й участник (или - 1, если он не получит никакого диплома).
Если существует несколько оптимальных решений, выведите любое из них. Гарантируется, что ответ всегда существует.