#include <bits/stdc++.h>
using namespace std;
bool done[1010];
int l[1010], r[1010], ans[1010];
int main() {
  int n, i, j, k;
  scanf("%d", &n);
  int rem = n;
  for (i = 0; i < n; i++) {
    scanf("%d", &l[i]);
    done[i] = 0;
  }
  for (i = 0; i < n; i++) scanf("%d", &r[i]);
  int maxx = n;
  while (1) {
    set<int> S;
    bool over = 1;
    for (i = 0; i < n; i++) {
      if (done[i] == 0) {
        over = 0;
        if (l[i] == 0 and r[i] == 0) {
          S.insert(i);
        }
      }
    }
    if (over) break;
    int sz = S.size();
    if (sz == 0) {
      cout << "NO" << endl;
      return 0;
    }
    set<int>::iterator it;
    for (it = S.begin(); it != S.end(); it++) {
      int idx = *it;
      ans[idx] = maxx;
      for (j = idx - 1; j >= 0; j--) {
        if (done[j] == 0 and S.find(j) == S.end()) {
          if (r[j] == 0) {
            cout << "NO" << endl;
            return 0;
          }
          r[j]--;
        }
      }
      for (j = idx + 1; j < n; j++) {
        if (done[j] == 0 and S.find(j) == S.end()) {
          if (l[j] == 0) {
            cout << "NO" << endl;
            return 0;
          }
          l[j]--;
        }
      }
    }
    for (it = S.begin(); it != S.end(); it++) {
      done[*it] = 1;
    }
    maxx--;
  }
  cout << "YES" << endl;
  for (i = 0; i < n; i++) cout << ans[i] << " ";
  cout << endl;
  return 0;
}
