#include <bits/stdc++.h>
using namespace std;
double EPS = 1e-9;
int INF = 2000000000;
long long INFF = 8000000000000000000LL;
double PI = acos(-1);
int dx[8] = {-1, 0, 0, 1, -1, -1, 1, 1};
int dy[8] = {0, 1, -1, 0, -1, 1, -1, 1};
inline string IntToString(int a) {
  char x[100];
  sprintf(x, "%d", a);
  string s = x;
  return s;
}
inline int StringToInt(string a) {
  char x[100];
  int res;
  strcpy(x, a.c_str());
  sscanf(x, "%d", &res);
  return res;
}
const int Nmax = 2200;
int N;
int H[Nmax];
int Cnt[Nmax], Pos[Nmax];
pair<int, int> Pairs[Nmax];
int main() {
  cin >> N;
  for (int(i) = (0); (i) < (Nmax); ++(i)) Cnt[i] = 0, Pos[i] = -1;
  for (int(i) = (0); (i) < (N); ++(i)) {
    cin >> H[i];
    Pairs[i] = make_pair(H[i], i + 1);
  };
  sort(Pairs, Pairs + N);
  for (int(i) = (0); (i) < (N); ++(i)) {
    Cnt[Pairs[i].first]++;
    Pos[Pairs[i].first] = i;
  }
  bool can = false;
  int v = -1;
  for (int(i) = (0); (i) < (Nmax); ++(i))
    if (Cnt[i] >= 3) {
      can = true;
      v = i;
    };
  if (can) {
    int i1 = -1, i2 = -1, i3 = -1;
    for (int(i) = (0); (i) < (N); ++(i))
      if (Pairs[i].first == v) {
        if (i1 == -1)
          i1 = i;
        else {
          if (i2 == -1)
            i2 = i;
          else
            i3 = i;
        };
      }
    cout << "YES" << endl;
    for (int(i) = (0); (i) < (N); ++(i)) cout << Pairs[i].second << " ";
    cout << endl;
    swap(Pairs[i1], Pairs[i2]);
    for (int(i) = (0); (i) < (N); ++(i)) cout << Pairs[i].second << " ";
    cout << endl;
    swap(Pairs[i1], Pairs[i3]);
    for (int(i) = (0); (i) < (N); ++(i)) cout << Pairs[i].second << " ";
    cout << endl;
    return 0;
  };
  int c = 0;
  int v1 = -1, v2 = -1;
  for (int(i) = (0); (i) < (Nmax); ++(i))
    if (Cnt[i] >= 2) {
      c++;
      if (v1 == -1)
        v1 = i;
      else
        v2 = i;
    };
  if (c >= 2) {
    int a = -1, b = -1, c = -1, d = -1;
    for (int(i) = (0); (i) < (N); ++(i)) {
      if (Pairs[i].first == v1) {
        if (a == -1)
          a = i;
        else
          b = i;
      };
      if (Pairs[i].first == v2) {
        if (c == -1)
          c = i;
        else
          d = i;
      };
    };
    cout << "YES" << endl;
    for (int(i) = (0); (i) < (N); ++(i)) cout << Pairs[i].second << " ";
    cout << endl;
    swap(Pairs[a], Pairs[b]);
    for (int(i) = (0); (i) < (N); ++(i)) cout << Pairs[i].second << " ";
    cout << endl;
    swap(Pairs[c], Pairs[d]);
    for (int(i) = (0); (i) < (N); ++(i)) cout << Pairs[i].second << " ";
    cout << endl;
    return 0;
  };
  cout << "NO" << endl;
  return 0;
}
