#include <bits/stdc++.h>
using std::cin;
using std::cout;
using std::deque;
using std::endl;
using std::map;
using std::max;
using std::min;
using std::pair;
using std::queue;
using std::sort;
using std::string;
using std::vector;
int main() {
  int n;
  cin >> n;
  pair<int, int> data[2000];
  int i;
  int x;
  for (i = 0; i < n; i++) {
    cin >> x;
    data[i].first = x;
    data[i].second = i + 1;
  }
  sort(data, data + n);
  int i1 = -1;
  int i2 = -1;
  for (i = 1; i < n; i++) {
    if (data[i - 1].first == data[i].first) {
      if (i1 == -1)
        i1 = i - 1;
      else if (i2 == -1) {
        i2 = i - 1;
        break;
      }
    }
  }
  if (i2 == -1)
    cout << "NO";
  else if (i2 - i1 == 1) {
    cout << "YES" << '\n';
    for (i = 0; i < n; i++) cout << data[i].second << ' ';
    cout << '\n';
    for (i = 0; i < i1; i++) cout << data[i].second << ' ';
    cout << data[i1 + 1].second << ' ';
    cout << data[i1 + 2].second << ' ';
    cout << data[i1].second << ' ';
    for (i = i1 + 3; i < n; i++) cout << data[i].second << ' ';
    cout << '\n';
    for (i = 0; i < i1; i++) cout << data[i].second << ' ';
    cout << data[i1 + 2].second << ' ';
    cout << data[i1].second << ' ';
    cout << data[i1 + 1].second << ' ';
    for (i = i1 + 3; i < n; i++) cout << data[i].second << ' ';
    cout << '\n';
  } else {
    cout << "YES" << '\n';
    for (i = 0; i < n; i++) cout << data[i].second << ' ';
    cout << '\n';
    for (i = 0; i < i1; i++) cout << data[i].second << ' ';
    cout << data[i1 + 1].second << ' ';
    cout << data[i1].second << ' ';
    for (i = i1 + 2; i < n; i++) cout << data[i].second << ' ';
    cout << '\n';
    for (i = 0; i < i2; i++) cout << data[i].second << ' ';
    cout << data[i2 + 1].second << ' ';
    cout << data[i2].second << ' ';
    for (i = i2 + 2; i < n; i++) cout << data[i].second << ' ';
    cout << '\n';
  }
  return 0;
}
