#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long x = 0, y = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') y = -y;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * y;
}
namespace qiqi {
const int N = 5e5 + 5;
int n, a[N], p[N];
set<int> in, out;
void main() {
  n = read();
  for (int i = (1); i <= (n * 2); ++i) {
    char o[10];
    scanf("%s", o);
    if (o[0] == '+')
      in.insert(i);
    else {
      int x = read();
      a[x] = i;
      out.insert(i);
    }
  }
  for (int i = (1); i <= (n); ++i) {
    set<int>::iterator it = in.upper_bound(a[i]);
    if (it == in.begin()) {
      puts("NO");
      return;
    }
    int x = *--it;
    p[x] = i;
    in.erase(x);
    out.erase(a[i]);
    it = out.upper_bound(a[i]);
    if (it == out.begin()) continue;
    if (*--it > x) {
      puts("NO");
      return;
    }
  }
  puts("YES");
  for (int i = (1); i <= (n * 2); ++i)
    if (p[i]) printf("%d ", p[i]);
}
}  // namespace qiqi
int main() {
  qiqi::main();
  return 0;
}
