#include <bits/stdc++.h>
using namespace std;
pair<int, int> am[200010];
int p1[200010], p2[200010];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  vector<pair<int, int> > swp;
  set<pair<int, int> > dnt;
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> am[i].first >> am[i].second;
    swp.push_back({am[i].first, i});
  }
  sort(swp.begin(), swp.end());
  int j = 0;
  bool existe = false;
  for (int i = 1; i <= n; i++) {
    while (swp[j].first == i && j < n) {
      dnt.insert({am[swp[j].second].second, swp[j].second});
      j++;
    }
    auto v = dnt.begin();
    p1[(*v).second] = i;
    p2[i] = (*v).second;
    dnt.erase(v);
  }
  j = 0;
  dnt.clear();
  set<pair<int, int> > dnth;
  pair<int, int> troca = make_pair(-1, -1);
  for (int i = 1; i <= n; i++) {
    while (swp[j].first == i && j < n) {
      dnt.insert({am[swp[j].second].second, swp[j].second});
      dnth.insert({p1[swp[j].second], swp[j].second});
      j++;
    }
    auto v = dnt.begin();
    p1[(*v).second] = i;
    p2[i] = (*v).second;
    dnt.erase(v);
    auto w = dnth.lower_bound(make_pair(i + 1, 0));
    if (w != dnth.end()) {
      if ((*w).first <= am[p2[i]].second) {
        troca.first = (*v).second;
        troca.second = (*w).second;
      }
    }
  }
  if (troca.first == -1) {
    cout << "YES" << endl;
    for (int i = 1; i <= n; i++) cout << p1[i] << ' ';
    cout << endl;
  } else {
    cout << "NO" << endl;
    for (int i = 1; i <= n; i++) cout << p1[i] << ' ';
    cout << endl;
    int svf = p1[troca.first], svs = p1[troca.second];
    p1[troca.first] = svs, p1[troca.second] = svf;
    for (int i = 1; i <= n; i++) cout << p1[i] << ' ';
    cout << endl;
  }
}
