#include <bits/stdc++.h>
using namespace std;
char f, g;
bool flag;
string s, p;
double aa, bb, cc;
map<int, int> mp;
vector<int> v, va, vb;
int arr[100005], brr[100005], crr[100005];
void init(int n) {
  for (int i = 0; i <= n; i++) {
  }
}
int main() {
  long long int ans = 0, sum = 0;
  int a, b, c, i, j, k, n, m, t, q, x, y, z, index, id;
  cin >> n;
  flag = true;
  for (i = 1; i <= n; i++) {
    cin >> a;
    if (mp[a])
      va.push_back(a);
    else
      v.push_back(a);
    mp[a]++;
    if (mp[a] > 2) {
      flag = false;
    }
  }
  if (!flag) {
    cout << "NO" << endl;
  } else {
    cout << "YES" << endl;
    if (v.size()) sort(v.begin(), v.end());
    if (va.size()) {
      sort(va.begin(), va.end());
      reverse(va.begin(), va.end());
    }
    cout << v.size() << endl;
    for (i = 0; i < v.size(); i++) {
      if (i) cout << ' ';
      cout << v[i];
    }
    printf("\n");
    cout << va.size() << endl;
    for (i = 0; i < va.size(); i++) {
      if (i) cout << ' ';
      cout << va[i];
    }
    printf("\n");
  }
  return 0;
}
