#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long t, n, m, i, s, j, k, c;
  {
    s = 0;
    cin >> n;
    vector<pair<char, long long>> vp(2 * n);
    for (i = 0; i < 2 * n; i++) {
      char ch;
      cin >> ch;
      if (ch == '+')
        vp[i] = {'+', 0};
      else {
        cin >> c;
        vp[i] = {'-', c};
      }
    }
    reverse(vp.begin(), vp.end());
    vector<long long> ans;
    stack<long long> st;
    long long f = 0;
    for (i = 0; i < 2 * n; i++) {
      if (vp[i].first == '+') {
        if (st.empty()) {
          f = 1;
          break;
        }
        ans.push_back(st.top());
        st.pop();
      } else {
        long long x = vp[i].second;
        if (!st.empty() && st.top() < x) {
          f = 1;
          break;
        }
        st.push(x);
      }
    }
    if (f)
      cout << "NO" << endl;
    else {
      cout << "YES" << endl;
      reverse(ans.begin(), ans.end());
      for (i = 0; i < n; i++) cout << ans[i] << " ";
    }
  }
  return 0;
}
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long power(long long x, long long y, long long m) {
  if (y == 0) return 1;
  long long p = power(x, y / 2, m) % m;
  p = (p * p) % m;
  return (y % 2 == 0) ? p : (x * p) % m;
}
long long modInverse(long long a, long long m) { return power(a, m - 2, m); }
long long binpow(long long a, long long b) {
  if (b == 0) return 1;
  long long res = binpow(a, b / 2);
  if (b % 2)
    return (((res % 1000000007) * (res % 1000000007) % 1000000007) *
            (a % 1000000007)) %
           1000000007;
  else
    return ((res % 1000000007) * (res % 1000000007)) % 1000000007;
}
