#include <bits/stdc++.h>
using namespace std;
template <typename T, typename C>
ostream &operator<<(ostream &os, pair<T, C> x) {
  return os << "<" << x.first << ", " << x.second << ">";
}
template <typename T>
auto operator<<(ostream &os, T x) ->
    typename enable_if<is_same<decltype(x.begin()), decltype(x.end())>::value &&
                           !is_same<T, string>::value,
                       ostream &>::type {
  os << "{";
  int cou = 0;
  for (auto c : x) {
    if (cou++) os << ", ";
    os << c;
  }
  return os << "}";
}
template <typename T>
string strmask(T r) {
  string ans;
  for (int i = 0; i < (8 * (int)sizeof(T)); i++) {
    ans += '0' + !!(((T)1 << i) & r);
    if (i % 5 == 4) ans += '.';
  }
  return ans;
}
const int MN = 22;
int a[MN];
int b[MN];
int n;
bool fine() {
  map<long long, int> h1;
  map<long long, int> h2;
  int half1 = n / 2;
  int half2 = n - half1;
  for (int mask = 0; mask < (1 << half1); mask++) {
    long long second = 0;
    for (int i = 0; i < (half1); i++)
      if (mask & (1 << i)) second += a[i] - b[i];
    h1[second]++;
  }
  for (int mask = 0; mask < (1 << half2); mask++) {
    long long second = 0;
    for (int i = 0; i < (half2); i++)
      if (mask & (1 << i)) second += b[half1 + i] - a[half1 + i];
    h2[second]++;
  }
  long long cou = 0;
  for (auto c : h1) cou += (long long)c.second * h2[c.first];
  return cou == 2;
}
pair<int, int> ord[MN];
int main() {
  srand(time(NULL));
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    scanf("%d", a + i);
    ord[i] = make_pair(a[i], i);
  }
  sort(ord, ord + n);
  for (int i = 0; i < (n); i++) {
    b[ord[i].second] = ord[(i + 1) % n].first;
  }
  for (int i = 0; i < (n); i++) printf("%d ", b[i]);
  printf("\n");
}
