#include <bits/stdc++.h>
using namespace std;
const int N = 1000005;
int n, m, a[N], pre[N], suf[N], vis[N], nxt[N], now = 1;
void No() {
  puts("no");
  exit(0);
}
void Del(int l, int r) {
  suf[pre[l]] = suf[r];
  pre[suf[r]] = pre[l];
}
int get() {
  while (vis[now]) ++now;
  if (now > n) No();
  vis[now] = -1;
  return now;
}
void Solve(int l, int r) {
  if ((r - l) & 1) No();
  for (int i = l; i <= r; i = suf[i])
    while (nxt[i]) {
      if (nxt[i] > r) No();
      Solve(suf[i], pre[nxt[i]]);
      Del(suf[i], nxt[i]);
      nxt[i] = nxt[nxt[i]];
    }
  int sum = 0, cnt = 0, root = a[pre[l]];
  for (int i = l; i <= r; i = suf[i]) sum++, cnt += a[i] > 0;
  sum = (sum + 1) / 2;
  if (cnt > sum) No();
  for (int i = suf[l]; i <= r; i = suf[i])
    if (!a[i] && cnt < sum) a[i] = get(), cnt++;
  if (sum == 1 && cnt == 0) a[l] = get();
  for (int i = l; suf[i] <= r; i = suf[i]) {
    while (i > l && suf[i] <= r && !a[pre[i]] && a[i] && a[suf[i]])
      a[pre[i]] = a[suf[i]], Del(i, suf[i]), i = pre[pre[i]];
    while (i >= l && suf[suf[i]] <= r && a[i] && a[suf[i]] && !a[suf[suf[i]]])
      a[suf[suf[i]]] = a[i], Del(suf[i], suf[suf[i]]), i = pre[i];
  }
  for (int i = l; i <= r; i = suf[i])
    if (!a[i]) a[i] = root;
}
signed main() {
  scanf("%d", &n);
  m = n + n - 1;
  for (int i = 1; i <= m; i++) scanf("%d", &a[i]);
  if (a[1] && a[m] && a[1] != a[m]) No();
  a[1] = a[m] = a[1] | a[m];
  for (int i = 0; i <= m; i++) pre[i] = i - 1, suf[i] = i + 1;
  for (int i = m; i; i--)
    if (a[i]) nxt[i] = vis[a[i]], vis[a[i]] = i;
  Solve(1, m);
  puts("yes");
  for (int i = 1; i <= m; i++) printf("%d ", a[i]);
}
