#include <bits/stdc++.h>
using namespace std;
struct seq {
  long long type;
  long long val;
};
vector<bool> used;
vector<seq> v;
vector<long long> ins, ord;
set<long long> s;
int32_t main() {
  ios_base::sync_with_stdio(false);
  long long n;
  cin >> n;
  v.clear();
  ins.clear();
  s.clear();
  ord.clear();
  used.assign(n, false);
  for (long long i = 0; i < (2 * n); i++) {
    char c;
    cin >> c;
    if (c == '-') {
      long long a;
      cin >> a;
      a--;
      v.push_back(seq{2, a});
      ins.push_back(a);
    } else {
      v.push_back(seq{1, -1});
    }
  }
  long long cur = 0;
  for (long long i = (2 * n) - 1; i >= 0; i--) {
    if (v[i].type == 1) {
      cur--;
      if (cur < 0) {
        cout << "NO\n";
        return 0;
      }
      long long x = *(s.begin());
      if (used[x]) {
        cout << "NO\n";
        return 0;
      }
      used[x] = true;
      ord.push_back(x);
      s.erase(s.begin());
    } else {
      cur++;
      s.insert(v[i].val);
    }
  }
  set<long long> tes;
  tes.clear();
  long long cur_ins = 0;
  long long cur_ord = n - 1;
  for (long long i = 0; i < (2 * n); i++) {
    if (v[i].type == 1) {
      tes.insert(ord[cur_ord--]);
    } else {
      long long x = *(tes.begin());
      if (x != ins[cur_ins++]) {
        cout << "NO\n";
        return 0;
      }
      tes.erase(tes.begin());
    }
  }
  cout << "YES\n";
  for (long long i = (n)-1; i >= 0; i--) {
    cout << ord[i] + 1 << ' ';
  }
  cout << '\n';
  return 0;
}
