#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
;
const long long maxn = 1e6;
long long A[maxn];
long long L[maxn];
long long R[maxn];
pair<long long, long long> B[maxn];
long long ANS[maxn];
int main() {
  long long q, w, e, r, n, m;
  cin >> n;
  for (q = 0; q < n; q++) {
    cin >> L[q];
  }
  for (q = 0; q < n; q++) {
    cin >> R[q];
  }
  for (q = 0; q < n; q++) {
    B[q].second = q;
    B[q].first = L[q] + R[q];
  }
  sort(&B[0], &B[n]);
  reverse(&B[0], &B[n]);
  long long cnt = 1;
  for (q = 0; q < n; q++) {
    if (q != 0) {
      if (B[q].first != B[q - 1].first) {
        cnt++;
      }
    }
    ANS[B[q].second] = cnt;
  }
  for (q = 0; q < n; q++) {
    long long cntl = 0, cntr = 0;
    for (w = 0; w < q; w++) {
      if (ANS[w] > ANS[q]) {
        cntl++;
      }
    }
    for (w = q + 1; w < n; w++) {
      if (ANS[w] > ANS[q]) {
        cntr++;
      }
    }
    if (L[q] != cntl || R[q] != cntr) {
      cout << "NO";
      return 0;
    }
  }
  cout << "YES" << endl;
  for (q = 0; q < n; q++) {
    cout << ANS[q] << " ";
  }
  return 0;
}
