#include <bits/stdc++.h>
using namespace std;
int vis[2000005], now = 1, a[2000005], pre[2000005], suf[2000005], n, m,
                  nex[2000005];
mt19937 Rand(time(NULL));
void Fail() {
  printf("no");
  exit(0);
}
int get() {
  while (vis[now]) now++;
  if (now > n) Fail();
  vis[now] = 1;
  return now;
}
void del(int x, int y) {
  int ls = pre[x], nx = suf[y];
  suf[ls] = nx;
  pre[nx] = ls;
}
void merge(int l, int r, int &x) {
  while (x >= l && suf[suf[x]] && suf[suf[x]] <= r && !a[x] && a[suf[x]] &&
         a[suf[suf[x]]]) {
    a[x] = a[suf[suf[x]]];
    del(suf[x], suf[suf[x]]);
    x = pre[pre[x]];
  }
  while (x >= l && suf[suf[x]] && suf[suf[x]] <= r && a[x] && a[suf[x]] &&
         !a[suf[suf[x]]]) {
    a[suf[suf[x]]] = a[x];
    del(suf[x], suf[suf[x]]);
    x = pre[pre[x]];
  }
}
void solve(int l, int r) {
  if (r - l & 1) Fail();
  for (int i = l; i <= r; i = suf[i]) {
    while (nex[i]) {
      if (nex[i] > r) Fail();
      solve(suf[i], pre[nex[i]]);
      del(suf[i], nex[i]);
      nex[i] = nex[nex[i]];
    }
  }
  int num1 = 0, num2 = 0, now_rt = a[pre[l]];
  for (int i = l; i <= r; i = suf[i]) {
    if (a[i]) num1++;
    num2++;
  }
  num2 = num2 / 2 + 1;
  if (num1 > num2) Fail();
  num2 -= num1;
  for (int i = l; num2 && i <= r; i = suf[i]) {
    if (a[i]) continue;
    a[i] = get();
    num2--;
  }
  for (int i = l; i <= r; i = suf[i]) {
    merge(l - 1, r, i);
  }
  for (int i = l; i <= r; i = suf[i]) {
    if (!a[i]) a[i] = now_rt;
  }
}
int main() {
  scanf("%d", &n);
  if (n == 1) {
    printf("yes\n");
    printf("1");
    return 0;
  }
  m = 2 * n - 1;
  for (int i = 1; i <= m; i++) scanf("%d", &a[i]);
  for (int i = 0; i <= m + 1; i++) pre[i] = i - 1, suf[i] = i + 1;
  pre[0] = 0;
  if (a[1] && a[m] && a[1] != a[m]) Fail();
  a[1] = a[m] = a[1] | a[m];
  for (int i = 2; i <= m; i++) {
    if (a[i] && a[i] == a[i - 1]) Fail();
  }
  for (int i = m; i >= 1; i--) {
    if (!a[i]) continue;
    if (vis[a[i]]) nex[i] = vis[a[i]];
    vis[a[i]] = i;
  }
  solve(1, m);
  for (int i = 1; i <= m; i++)
    if (!a[i]) a[i] = a[1];
  printf("yes\n");
  for (int i = 1; i <= m; i++) {
    printf("%d ", a[i]);
  }
}
