#include <bits/stdc++.h>
using namespace std;
int gi() {
  int res = 0, w = 1;
  char ch = getchar();
  while (ch != '-' && !isdigit(ch)) ch = getchar();
  if (ch == '-') w = -1, ch = getchar();
  while (isdigit(ch)) res = res * 10 + ch - '0', ch = getchar();
  return res * w;
}
const int MAX_N = 1e6 + 5;
void Fail() {
  puts("no");
  exit(0);
}
int N, M, a[MAX_N];
int pre[MAX_N], suf[MAX_N], nxt[MAX_N];
int buc[MAX_N];
void del(int l, int r) { suf[pre[l]] = suf[r], pre[suf[r]] = pre[l]; }
int get() {
  static int num = 1;
  while (buc[num]) ++num;
  if (num > N) Fail();
  return buc[num] = -1, num;
}
void build(int l, int r) {
  if ((r - l) & 1) Fail();
  for (int i = l; i <= r; i = suf[i])
    while (nxt[i]) {
      if (nxt[i] > r) Fail();
      build(suf[i], pre[nxt[i]]);
      del(suf[i], nxt[i]), nxt[i] = nxt[nxt[i]];
    }
  int sum = 0, cnt = 0, rt = a[pre[l]];
  for (int i = l; i <= r; i = suf[i]) sum++, cnt += a[i] > 0;
  sum = (sum + 1) >> 1;
  if (cnt > sum) Fail();
  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] = rt;
}
int main() {
  N = gi();
  M = 2 * N - 1;
  for (int i = 1; i <= M; i++) a[i] = gi();
  if (a[1] && a[M] && a[1] != a[M]) Fail();
  if (!a[1] || !a[M]) 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]) {
      if (buc[a[i]]) nxt[i] = buc[a[i]];
      buc[a[i]] = i;
    }
  build(1, M);
  puts("yes");
  for (int i = 1; i <= M; i++) printf("%d ", a[i]);
  putchar('\n');
  return 0;
}
