#include <bits/stdc++.h>
using namespace std;
template <typename T>
T sqr(const T& x) {
  return x * x;
}
template <typename T>
T my_abs(const T& x) {
  return x < 0 ? -x : x;
}
const int INF = (int)1e9;
const long long LINF = (long long)6e18;
const long long INF64 = LINF;
const long long INFLL = LINF;
const long double EPS = 1e-9;
const long double PI = 3.1415926535897932384626433832795;
int n;
const int N = (int)5e4 + 10;
int a[N];
bool read() {
  scanf("%d", &n);
  for (int i = 0; i < int(n); ++i) {
    scanf("%d", &a[i]);
  }
  return true;
}
vector<pair<long double, int> > c;
pair<long double, long double> p[4];
pair<long double, long double> operator+(
    const pair<long double, long double>& a,
    const pair<long double, long double>& b) {
  return pair<long double, long double>(a.first + b.first, a.second + b.second);
}
pair<long double, long double> operator-(
    const pair<long double, long double>& a,
    const pair<long double, long double>& b) {
  return pair<long double, long double>(a.first - b.first, a.second - b.second);
}
pair<long double, long double> operator*(
    const pair<long double, long double>& a, const long double& d) {
  return pair<long double, long double>(a.first * d, a.second * d);
}
pair<long double, long double> operator/(
    const pair<long double, long double>& a, const long double& d) {
  return pair<long double, long double>(a.first / d, a.second / d);
}
long double dist(const pair<long double, long double>& a,
                 const pair<long double, long double>& b) {
  return sqrt(sqr(a.first - b.first) + sqr(a.second - b.second));
}
long double dist(const pair<long double, long double>& p,
                 const pair<long double, long double>& q,
                 const pair<long double, long double>& a) {
  long double A = p.second - q.second;
  long double B = q.first - p.first;
  long double C = -A * p.first - B * p.second;
  return abs(A * a.first + B * a.second + C) / sqrt(sqr(A) + sqr(B));
}
long double calc(int i, int j) {
  pair<long double, long double> p1 = p[0] + (p[1] - p[0]) * i / (long double)n;
  pair<long double, long double> p2 = p[2] + (p[3] - p[2]) * j / (long double)n;
  long double l = dist(p1, p2);
  long double h1 = dist(p1, p2, p[1]);
  long double h2 = dist(p1, p2, p[2]);
  return (h2 - h1) * l;
}
int ans[N];
void solve() {
  long double an = PI / n;
  for (int i = 0; i < int(4); ++i) {
    p[i] = pair<long double, long double>(cos(i * an), sin(i * an));
  }
  for (int i = 0; i < int(n); ++i) {
    c.push_back(make_pair(calc(a[i], a[(i + 1) % n]), i));
  }
  sort(c.begin(), c.end());
  for (int i = 0; i < int(n); ++i) {
    ans[c[i].second] = i;
  }
  for (int i = 0; i < int(n); ++i) {
    printf("%d ", ans[i]);
  }
}
int main() {
  srand((unsigned int)time(NULL));
  cout << setprecision(15) << fixed;
  read();
  solve();
  return 0;
}
