#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long num = 0, flag = 1;
  char c = ' ';
  for (; c > '9' || c < '0'; c = getchar())
    if (c == '-') flag = -1;
  for (; c >= '0' && c <= '9';
       num = (num << 1) + (num << 3) + c - 48, c = getchar())
    ;
  return num * flag;
}
long long l[100005], r[100005], n;
struct Node {
  long long pos, rk;
} a[100005];
bool cmp(Node a, Node b) { return a.rk < a.rk; }
long long ans[100005];
signed main() {
  n = read();
  for (register long long i = (1); i <= (n); i++) l[i] = read();
  for (register long long i = (1); i <= (n); i++) r[i] = read();
  for (register long long i = (1); i <= (n); i++)
    a[i].rk = (l[i] + r[i]), a[i].pos = i;
  sort(a + 1, a + 1 + n, cmp);
  for (register long long i = (1); i <= (n); i++) ans[a[i].pos] = (n - a[i].rk);
  for (register long long i = (1); i <= (n); i++) {
    long long lnum = 0, rnum = 0;
    for (register long long j = (1); j <= (i - 1); j++) {
      lnum += (ans[j] > ans[i]);
    }
    for (register long long j = (i + 1); j <= (n); j++) {
      rnum += (ans[j] > ans[i]);
    }
    if (lnum != l[i] || rnum != r[i]) {
      cout << "NO";
      return 0;
    }
  }
  cout << "YES\n";
  for (register long long i = (1); i <= (n); i++) {
    cout << ans[i] << ' ';
  }
  return 0;
}
