#include <bits/stdc++.h>
using namespace std;
const int N = 3e3 + 10;
pair<int, int> tab[N];
int n;
int max_przedzial[N][N][2];
int wyn[N], roznica1, roznica2, roznica3, wyn1, wyn2, wyn3;
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> tab[i].first;
    tab[i].second = i;
  }
  sort(tab + 1, tab + n + 1, greater<pair<int, int> >());
  for (int i = 1; i <= n; i++) {
    max_przedzial[i][i][0] = tab[i].first - tab[i + 1].first;
    max_przedzial[i][i][1] = i;
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (j + i <= n) {
        if (max_przedzial[j][j + i - 1][0] > max_przedzial[j + 1][j + i][0])
          max_przedzial[j][j + i][1] = max_przedzial[j][j + i - 1][1];
        else
          max_przedzial[j][j + i][1] = max_przedzial[j + 1][j + i][1];
        max_przedzial[j][j + i][0] =
            max(max_przedzial[j][j + i - 1][0], max_przedzial[j + 1][j + i][0]);
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = i + 1; j <= n; j++) {
      vector<int> wielkosci;
      wielkosci.push_back(i);
      wielkosci.push_back(j - i);
      int mniejszy = min(i, j - i);
      int wiekszy = max(i, j - i);
      int pocz = j + max(1, (wiekszy + 1) / 2);
      int kon = j + min(2 * mniejszy, n - j);
      if (kon < pocz) continue;
      int gdzie = max_przedzial[pocz][kon][1];
      wielkosci.push_back(gdzie - j);
      sort(wielkosci.begin(), wielkosci.end());
      if (wielkosci[0] * 2 < wielkosci[2]) continue;
      bool popraw = false;
      if (tab[i].first - tab[i + 1].first > roznica1) popraw = true;
      if (tab[i].first - tab[i + 1].first == roznica1) {
        if (tab[j].first - tab[j + 1].first > roznica2) popraw = true;
        if (tab[j].first - tab[j + 1].first == roznica2) {
          if (tab[gdzie].first - tab[gdzie + 1].first > roznica3) popraw = true;
        }
      }
      if (popraw) {
        roznica1 = tab[i].first - tab[i + 1].first;
        roznica2 = tab[j].first - tab[j + 1].first;
        roznica3 = tab[gdzie].first - tab[gdzie + 1].first;
        wyn1 = i;
        wyn2 = j;
        wyn3 = gdzie;
      }
    }
  }
  for (int i = 1; i <= wyn1; i++) wyn[tab[i].second] = 1;
  for (int i = wyn1 + 1; i <= wyn2; i++) wyn[tab[i].second] = 2;
  for (int i = wyn2 + 1; i <= wyn3; i++) wyn[tab[i].second] = 3;
  for (int i = wyn3 + 1; i <= n; i++) wyn[tab[i].second] = -1;
  for (int i = 1; i <= n; i++) cout << wyn[i] << " ";
}
