#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
bool vis[N];
vector<int> temp;
int n, t, num;
int ans[N], L[N], R[N];
void pr() {
  return;
  for (int i = 0; i < n; i++) printf("%d ", ans[i]);
  puts("");
  puts("");
}
void pr2() {
  return;
  printf("%d\n", temp.size());
  for (int i = 0; i < temp.size(); i++) printf("%d ", temp[i]);
  puts("");
  puts("");
}
void check() {
  for (int i = 0; i < n; i++) {
    int c = 0;
    for (int j = 0; j < i; j++) c += (ans[j] > ans[i]);
    if (c != L[i]) {
      printf("NO");
      exit(0);
    }
    c = 0;
    for (int j = i; j < n; j++) c += (ans[j] > ans[i]);
    if (c != R[i]) {
      printf("NO");
      exit(0);
    }
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &L[i]);
  for (int i = 0; i < n; i++) scanf("%d", &R[i]);
  if (L[0] != 0 || R[n - 1] != 0) {
    printf("NO");
    return 0;
  }
  num = 0;
  pr();
  while (num < n) {
    temp.clear();
    for (int i = 0; i < n; i++) {
      if (L[i] + R[i] == num) {
        temp.push_back(i);
        vis[i] = 1;
      }
    }
    if (temp.empty()) {
      printf("NO");
      return 0;
    }
    pr2();
    for (int i = 0; i < temp.size(); i++) {
      int x = temp[i];
      ans[x] = n - num;
    }
    pr();
    num += temp.size();
  }
  check();
  puts("YES");
  for (int i = 0; i < n; i++) printf("%d ", ans[i]);
  return 0;
}
