#include <bits/stdc++.h>
using namespace std;
int n, pos[100010], ans[100010];
int val[200010];
void Add(int x, int ad) {
  for (; x <= 2 * n; x += (x & -x)) val[x] += ad;
}
int Ask(int x) {
  int ans = 0;
  for (; x; x -= (x & -x)) ans += val[x];
  return ans;
}
int val2[200010];
void Add2(int x, int ad) {
  for (; x <= 2 * n; x += (x & -x)) val2[x] += ad;
}
int Ask2(int x) {
  int ans = 0;
  for (; x; x -= (x & -x)) ans += val2[x];
  return ans;
}
int main() {
  scanf("%d", &n);
  char ch;
  int x, cnt1 = 0, cnt2 = 0;
  for (int i = 1; i <= 2 * n; i++) {
    scanf(" %c", &ch);
    if (ch == '+')
      cnt1++, Add(i, 1);
    else {
      scanf("%d", &x);
      Add2(i, 1);
      cnt2++;
      pos[x] = i;
    }
    if (cnt2 > cnt1) {
      printf("NO");
      return 0;
    }
  }
  vector<pair<int, int> > vec;
  for (int i = 1; i <= n; i++) {
    int l = 1, r = pos[i], mid;
    Add2(pos[i], -1);
    while (l < r) {
      mid = (l + r + 1) >> 1;
      if (Ask(pos[i]) - Ask(mid - 1) > 0)
        l = mid;
      else
        r = mid - 1;
    }
    ans[i] = l;
    Add(l, -1);
    vec.push_back(make_pair(l, i));
    if (Ask2(pos[i]) - Ask2(l - 1) > 0) {
      printf("NO");
      return 0;
    }
  }
  sort(vec.begin(), vec.end());
  puts("YES");
  for (int i = 0; i < n; i++) printf("%d ", vec[i].second);
  puts("");
  return 0;
}
