#include <bits/stdc++.h>
using namespace std;
struct node {
  int a, ord;
} p[10005];
int b[10005];
bool cmp(node a, node b) { return a.a < b.a; }
int main() {
  int n;
  while (~scanf("%d", &n)) {
    memset(b, 0, sizeof(b));
    for (int i = 0; i < n; i++) {
      scanf("%d", &p[i].a);
      b[p[i].a]++;
      p[i].ord = i + 1;
    }
    sort(p, p + n, cmp);
    int sum = 1;
    int ss[2], A = 0;
    int sss = -1;
    int flag = 1;
    int i;
    for (i = 1; i < n; i++) {
      if (p[i].a == p[i - 1].a)
        flag++;
      else {
        if (flag >= 3) {
          sss = p[i - 1].a;
          flag = -1;
          break;
        } else if (flag == 2)
          ss[A++] = p[i - 1].a;
        flag = 1;
        if (A == 2) {
          flag = -2;
          break;
        }
      }
    }
    if (flag >= 3) {
      sss = p[i - 1].a;
      flag = -1;
    } else if (flag == 2)
      ss[A++] = p[i - 1].a;
    flag = 1;
    if (A == 2) {
      flag = -2;
    }
    if (sss != -1) flag = -1;
    if (flag > 0)
      cout << "NO" << endl;
    else {
      cout << "YES" << endl;
      if (flag == -1) {
        for (int i = 0; i < 3; i++) {
          flag = 1;
          for (int j = 0; j < n; j++) {
            if (j != 0) printf(" ");
            if (flag && p[j].a == sss) {
              if (i == 0)
                printf("%d %d %d", p[j].ord, p[j + 1].ord, p[j + 2].ord);
              else if (i == 1)
                printf("%d %d %d", p[j + 1].ord, p[j + 2].ord, p[j].ord);
              else
                printf("%d %d %d", p[j + 2].ord, p[j].ord, p[j + 1].ord);
              j += 2;
              flag = 0;
            } else
              printf("%d", p[j].ord);
          }
          printf("\n");
        }
      } else {
        for (int i = 0; i < 3; i++) {
          for (int j = 0; j < n; j++) {
            if (j != 0) printf(" ");
            if (i == 0 && p[j].a == ss[0]) {
              printf("%d %d", p[j].ord, p[j + 1].ord);
              j++;
            } else if (i == 1 && p[j].a == ss[0]) {
              printf("%d %d", p[j + 1].ord, p[j].ord);
              j++;
            } else if (i == 2 && p[j].a == ss[1]) {
              printf("%d %d", p[j + 1].ord, p[j].ord);
              j++;
            } else
              printf("%d", p[j].ord);
          }
          printf("\n");
        }
      }
    }
  }
  return 0;
}
