#include <bits/stdc++.h>
using namespace std;
struct node {
  int num;
  int idx;
} a[2003];
int c[2003] = {0};
bool func(struct node x, struct node y) { return x.num < y.num; }
int main() {
  int n;
  scanf("%d", &n);
  int i, j;
  int x, y;
  int x1, x2;
  for (i = 0; i < n; i++) {
    scanf("%d", &a[i].num);
    a[i].idx = i + 1;
    c[a[i].num]++;
  }
  int tmp = 0;
  bool flag = 0;
  x = y = -1;
  x1 = x2 = -1;
  for (i = 0; i <= 2000; i++) {
    if (c[i] == 2) {
      if (x1 == -1) {
        x1 = i;
      }
      tmp++;
    }
    if (tmp == 2) {
      x2 = i;
      flag = 1;
      break;
    }
    if (c[i] > 2) {
      flag = 1;
      y = i;
      break;
    }
  }
  if (!flag) {
    cout << "NO" << endl;
  } else {
    cout << "YES" << endl;
    sort(a, a + n, func);
    if (y != -1) {
      flag = 0;
      for (j = 0; j < 3; j++) {
        flag = 0;
        if (j == 0) {
          for (i = 0; i < n; i++) {
            if (a[i].num != y || flag) {
              cout << a[i].idx << " ";
            } else if (!flag) {
              cout << a[i].idx << " " << a[i + 1].idx << " " << a[i + 2].idx
                   << " ";
              i += 2;
              flag = 1;
            }
          }
        }
        if (j == 1) {
          for (i = 0; i < n; i++) {
            if (a[i].num != y || flag) {
              cout << a[i].idx << " ";
            } else {
              cout << a[i + 1].idx << " " << a[i].idx << " " << a[i + 2].idx
                   << " ";
              i += 2;
              flag = 1;
            }
          }
        }
        if (j == 2) {
          for (i = 0; i < n; i++) {
            if (a[i].num != y || flag) {
              cout << a[i].idx << " ";
            } else {
              cout << a[i + 2].idx << " " << a[i + 1].idx << " " << a[i].idx
                   << " ";
              i += 2;
              flag = 1;
            }
          }
        }
        cout << endl;
      }
    } else {
      flag = 0;
      for (j = 0; j < 3; j++) {
        flag = 0;
        if (j == 0) {
          for (i = 0; i < n; i++) {
            if (a[i].num != x1 || flag) {
              cout << a[i].idx << " ";
            } else if (!flag) {
              cout << a[i].idx << " " << a[i + 1].idx << " ";
              i += 1;
              flag = 1;
            }
          }
        }
        if (j == 1) {
          for (i = 0; i < n; i++) {
            if (a[i].num != x1 || flag) {
              cout << a[i].idx << " ";
            } else {
              cout << a[i + 1].idx << " " << a[i].idx << " ";
              i += 1;
              flag = 1;
            }
          }
        }
        if (j == 2) {
          for (i = 0; i < n; i++) {
            if (a[i].num != x2 || flag) {
              cout << a[i].idx << " ";
            } else {
              cout << a[i + 1].idx << " " << a[i].idx << " ";
              i += 1;
              flag = 1;
            }
          }
        }
        cout << endl;
      }
    }
  }
  return 0;
}
