#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  int n;
  cin >> n;
  int sec[300000];
  for (int i = 0; i < n; i++) {
    cin >> sec[i];
  }
  vector<int> v1;
  vector<int> v2;
  bool v1t = true;
  bool v2t = true;
  int lv1a = sec[0];
  int lv1b = -1;
  int lv2a = sec[0];
  int lv2b = -1;
  v1.push_back(0);
  v2.push_back(1);
  for (int i = 1; i < n; i++) {
    if (v1t || v2t) {
      if (v1t) {
        if (sec[i] <= lv1a) {
          if (lv1b < 0 || sec[i] < lv1b) {
            v1.push_back(1);
            lv1b = sec[i];
          } else {
            v1.push_back(3);
            v1t = false;
          }
        } else {
          if (i == n - 1) {
            if (sec[i] > lv1a) {
              v1.push_back(0);
              lv1a = sec[i];
            } else if (lv1b < 0 || sec[i] < lv1b) {
              v1.push_back(1);
              lv1b = sec[i];
            } else {
              v1.push_back(4);
              v1t = false;
            }
          } else {
            if (sec[i + 1] < sec[i]) {
              if (lv1b < 0 || sec[i] < lv1b) {
                v1.push_back(1);
                lv1b = sec[i];
              } else if (sec[i] > lv1a) {
                v1.push_back(0);
                lv1a = sec[i];
              } else {
                v1.push_back(5);
                v1t = false;
              }
            } else {
              if (sec[i] > lv1a) {
                v1.push_back(0);
                lv1a = sec[i];
              } else if (lv1b < 0 || sec[i] < lv1b) {
                v1.push_back(1);
                lv1b = sec[i];
              } else {
                v1.push_back(6);
                v1t = false;
              }
            }
          }
        }
      }
      if (v2t) {
        if (sec[i] >= lv2a) {
          if (sec[i] > lv2b) {
            v2.push_back(0);
            lv2b = sec[i];
          } else {
            v2.push_back(3);
            v2t = false;
          }
        } else {
          if (i == n - 1) {
            if (sec[i] < lv2a) {
              v2.push_back(1);
              lv2a = sec[i];
            } else if (sec[i] > lv2b) {
              v2.push_back(0);
              lv2b = sec[i];
            } else {
              v2.push_back(4);
              v2t = false;
            }
          } else {
            if (sec[i + 1] > sec[i]) {
              if (sec[i] > lv2b) {
                v2.push_back(0);
                lv2b = sec[i];
              } else if (sec[i] < lv2a) {
                v2.push_back(1);
                lv2a = sec[i];
              } else {
                v2.push_back(5);
                v2t = false;
              }
            } else {
              if (sec[i] < lv2a) {
                v2.push_back(1);
                lv2a = sec[i];
              } else if (sec[i] > lv2b) {
                v2.push_back(0);
                lv2b = sec[i];
              } else {
                v2.push_back(6);
                v2t = false;
              }
            }
          }
        }
      }
    } else {
      cout << "NO\n";
      return 0;
    }
  }
  if (v1t) {
    cout << "YES\n";
    for (int i = 0; i < n; i++) {
      if (i != n - 1) {
        cout << v1[i] << " ";
      } else {
        cout << v1[i] << "\n";
      }
    }
    return 0;
  }
  if (v2t) {
    cout << "YES\n";
    for (int i = 0; i < n; i++) {
      if (i != n - 1) {
        cout << v2[i] << " ";
      } else {
        cout << v2[i] << "\n";
      }
    }
    return 0;
  }
  cout << "NO\n";
  return 0;
}
