#include <bits/stdc++.h>
using namespace std;
const int maxn = (int)2e5 + 100;
int n, a[maxn], b[maxn], c[maxn], num[maxn];
int sum[maxn << 2], lazy[maxn << 2];
void pushup(int rt) { sum[rt] = sum[rt << 1] + sum[rt << 1 | 1]; }
void build(int l, int r, int rt) {
  if (l == r) {
    sum[rt] = 0;
    return;
  }
  int m = (l + r) >> 1;
  build(l, m, rt << 1);
  build(m + 1, r, rt << 1 | 1);
  pushup(rt);
}
void add(int L, int c, int l, int r, int rt) {
  if (l == r) {
    sum[rt] += c;
    return;
  }
  int m = (l + r) >> 1;
  if (L <= m)
    add(L, c, l, m, rt << 1);
  else
    add(L, c, m + 1, r, rt << 1 | 1);
  pushup(rt);
}
int query(int L, int R, int l, int r, int rt) {
  if (L <= l && r <= R) return sum[rt];
  int m = (l + r) >> 1;
  int ans = 0;
  if (L <= m) ans += query(L, R, l, m, rt << 1);
  if (R > m) ans += query(L, R, m + 1, r, rt << 1 | 1);
  return ans;
}
int dq(int L, int R, int l, int r, int rt) {
  if (L == R) return R;
  int mid = L + R >> 1;
  if (query(L, mid, 1, n, 1))
    return dq(L, mid, 1, n, 1);
  else
    return dq(mid + 1, R, 1, n, 1);
}
int main() {
  cin >> n;
  for (int i = (1); i <= (n); ++i) scanf("%d", &a[i]);
  for (int i = (1); i <= (n); ++i) {
    int x;
    scanf("%d", &x);
    num[x]++;
  }
  build(1, n, 1);
  for (int i = (0); i <= (n - 1); ++i)
    if (num[i]) add(i + 1, num[i], 1, n, 1);
  for (int i = (1); i <= (n); ++i) {
    int ans = (n - a[i]) % n, res;
    if (query(ans + 1, n, 1, n, 1)) {
      res = dq(ans + 1, n, 1, n, 1);
      num[res - 1]--;
      add(res, -1, 1, n, 1);
      printf("%d ", (res - 1 + a[i]) % n);
    } else {
      res = dq(1, ans, 1, n, 1);
      num[res - 1]--;
      add(res, -1, 1, n, 1);
      printf("%d ", (res - 1 + a[i]) % n);
    }
  }
}
