#include <bits/stdc++.h>
using namespace std;
struct node {
  int n, id;
} a[2004];
int cmp(node a, node b) {
  if (a.n < b.n) return 1;
  return 0;
}
int main() {
  int n;
  while (cin >> n) {
    int i, used[2005];
    memset(used, 0, sizeof(used));
    for (i = 0; i < n; i++) {
      cin >> a[i].n;
      a[i].id = i;
      used[a[i].n]++;
    }
    sort(a, a + n, cmp);
    int sum2 = 0, sum3 = 0;
    for (i = 1; i <= 2000; i++) {
      if (used[i] == 2) sum2++;
      if (used[i] >= 3) sum3++;
      if (sum2 >= 2) break;
      if (sum3 >= 1) break;
    }
    if (i == 2001) {
      puts("NO");
      continue;
    }
    puts("YES");
    int k = 0, j;
    for (i = 0; i < n - 1; i++) {
      if (a[i].n == a[i + 1].n) {
        if (k == 2) swap(a[i], a[i + 1]);
        printf("%d", a[0].id + 1);
        for (j = 1; j < n; j++) printf(" %d", a[j].id + 1);
        puts("");
        k++;
        if (k == 3) break;
        swap(a[i], a[i + 1]);
        printf("%d", a[0].id + 1);
        for (j = 1; j < n; j++) printf(" %d", a[j].id + 1);
        puts("");
        swap(a[i], a[i + 1]);
        k++;
        if (k == 3) break;
      }
    }
  }
  return 0;
}
