#include <bits/stdc++.h>
using namespace std;
struct broj {
  int id;
  long double x;
  bool operator<(const broj& other) const { return x < other.x; }
};
int n;
int p[50005];
int sol[50005];
broj a[50005];
long double det(complex<long double> a, complex<long double> b,
                complex<long double> c) {
  return a.real() * b.imag() + b.real() * c.imag() + c.real() * a.imag() -
         a.imag() * b.real() - b.imag() * c.real() - c.imag() * a.real();
}
long double ldabs(long double x) {
  if (x > 0) {
    return x;
  }
  return -x;
}
long double izracunaj(int a, int b) {
  const long double pitaa = 3.14159265358979323;
  complex<long double> p = {(long double)a, 0};
  complex<long double> m = {(long double)n, 0};
  complex<long double> unutra =
      pitaa / n * complex<long double>(0, (long double)1);
  complex<long double> dr = exp(unutra);
  complex<long double> k =
      m + m * dr + dr * dr * complex<long double>((long double)b, 0);
  complex<long double> u = m;
  complex<long double> v = m + dr * complex<long double>((long double)1, 0);
  return ldabs(det(p, k, v)) - ldabs(det(p, k, u));
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", p + i);
  }
  for (int i = 0; i < n; i++) {
    a[i].x = izracunaj(p[i], p[(i + 1) % n]);
    a[i].id = i;
  }
  sort(a, a + n);
  for (int i = 0; i < n; i++) {
    sol[a[i].id] = i;
  }
  for (int i = 0; i < n; i++) {
    printf("%d ", sol[i]);
  }
  {
    int _;
    scanf("%d", &_);
  }
}
