#include <bits/stdc++.h>
using namespace std;
long long const MAX = 2005;
vector<int> mas[MAX];
int main() {
  int n;
  cin >> n;
  int y;
  for (int i = 0; i < n; i++) {
    cin >> y;
    mas[y].push_back(i + 1);
  }
  int kil_2 = 0;
  int kil_3 = 0;
  vector<int> fir, sec, thir;
  for (int i = 0; i < MAX; i++) {
    if (mas[i].size() == 2)
      kil_2++;
    else if (mas[i].size() >= 3)
      kil_3++;
  }
  if (kil_2 < 2 && kil_3 == 0) {
    cout << "NO" << endl;
    return 0;
  } else {
    vector<int> cur;
    int index = 0;
    int was2 = 0;
    bool was3 = false;
    for (int i = 0; i < MAX; i++) {
      if (mas[i].size() == 2) {
        if (was2 == 0) {
          int u;
          cur = mas[i];
          u = cur[cur.size() - 1];
          fir.push_back(u);
          sec.push_back(u);
          cur.pop_back();
          int hh = cur[cur.size() - 1];
          fir.push_back(hh);
          sec.push_back(hh);
          thir.push_back(hh);
          thir.push_back(u);
          was2++;
          index += 2;
        } else {
          int u;
          cur = mas[i];
          u = cur[cur.size() - 1];
          fir.push_back(u);
          thir.push_back(u);
          cur.pop_back();
          int hh = cur[cur.size() - 1];
          fir.push_back(hh);
          thir.push_back(hh);
          sec.push_back(hh);
          sec.push_back(u);
          was2++;
          index += 2;
        }
      } else if (mas[i].size() == 1) {
        fir.push_back(mas[i][0]);
        sec.push_back(mas[i][0]);
        thir.push_back(mas[i][0]);
        index++;
      } else if (mas[i].size() >= 3) {
        int i1, i2, i3;
        i1 = mas[i][0];
        i2 = mas[i][1];
        i3 = mas[i][2];
        fir.push_back(i1);
        fir.push_back(i2);
        fir.push_back(i3);
        sec.push_back(i1);
        sec.push_back(i3);
        sec.push_back(i2);
        thir.push_back(i2);
        thir.push_back(i1);
        thir.push_back(i3);
        index += 3;
        for (int ee = 3; ee < mas[i].size(); ee++) {
          fir.push_back(mas[i][ee]);
          sec.push_back(mas[i][ee]);
          thir.push_back(mas[i][ee]);
          index++;
        }
      }
    }
  }
  cout << "YES" << endl;
  cout << fir[0];
  for (int i = 1; i < fir.size(); i++) cout << " " << fir[i];
  cout << endl;
  cout << sec[0];
  for (int i = 1; i < fir.size(); i++) cout << " " << sec[i];
  cout << endl;
  cout << thir[0];
  for (int i = 1; i < sec.size(); i++) cout << " " << thir[i];
  cout << endl;
  return 0;
}
