#include <bits/stdc++.h>
using namespace std;
bool ByValue(pair<long long, long long> a, pair<long long, long long> b) {
  if (a.first < b.first) {
    return true;
  }
  return false;
}
void print(vector<long long> cisla) {
  for (long long i = 0; i < (cisla.size()); i++) {
    if (i > 0) cout << " ";
    cout << cisla[i];
  }
  cout << endl;
}
int main() {
  long long pocetCisle;
  cin >> pocetCisle;
  vector<pair<long long, long long> > cisla;
  for (long long i = 0; i < (pocetCisle); i++) {
    long long temp;
    cin >> temp;
    cisla.push_back(pair<long long, long long>(temp, i));
  }
  sort((cisla).begin(), (cisla).end(), ByValue);
  long long trojka = -1;
  long long dvojka1 = -1;
  long long dvojka2 = -1;
  for (long long i = 1; i <= (pocetCisle - 1); i++) {
    if (cisla[i].first == cisla[i - 1].first) {
      if (dvojka1 == -1) {
        dvojka1 = i;
      } else if (dvojka1 != i - 1) {
        dvojka2 = i;
      }
    }
    if (i > 1 && cisla[i].first == cisla[i - 1].first &&
        cisla[i].first == cisla[i - 2].first) {
      trojka = i;
    }
  }
  if (trojka > -1 || (dvojka1 > -1 && dvojka2 > -1)) {
    cout << "YES" << endl;
  } else {
    cout << "NO" << endl;
    return 0;
  }
  vector<long long> prvy;
  for (long long i = 0; i < (pocetCisle); i++) {
    prvy.push_back(cisla[i].second + 1);
  }
  vector<long long> druhy = prvy, treti = prvy;
  if (trojka > -1) {
    swap(druhy[trojka], druhy[trojka - 1]);
    swap(treti[trojka - 1], treti[trojka - 2]);
  } else {
    swap(druhy[dvojka2], druhy[dvojka2 - 1]);
    swap(treti[dvojka1], treti[dvojka1 - 1]);
  }
  print(prvy);
  print(druhy);
  print(treti);
  return 0;
}
