#include <bits/stdc++.h>
using namespace std;
int N;
struct query {
  int flg, val;
  query(int f = 0, int v = 0) : flg(f), val(v) {}
  void input() {
    char c;
    scanf("\n%c", &c);
    flg = c == '-';
    if (flg) scanf("%d", &val);
  }
} Q[2 * 100005];
priority_queue<int> scase, tscase;
stack<int> rlt, tst;
int main() {
  int i, j;
  scanf("%d", &N);
  for (i = 2 * N - 1; i >= 0; i--) Q[i].input();
  for (i = 0; i < 2 * N; i++) {
    if (Q[i].flg)
      scase.push(-Q[i].val);
    else {
      if (scase.empty()) {
        puts("NO");
        return 0;
      }
      rlt.push(-scase.top());
      tst.push(-scase.top());
      scase.pop();
    }
  }
  for (i = 2 * N - 1; i >= 0; i--) {
    if (Q[i].flg) {
      if (Q[i].val != -tscase.top()) {
        puts("NO");
        return 0;
      }
      tscase.pop();
    } else {
      tscase.push(-tst.top());
      tst.pop();
    }
  }
  puts("YES");
  while (!rlt.empty()) {
    printf("%d ", rlt.top());
    rlt.pop();
  }
  return 0;
}
