#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[3000], b[3000], c[3000];
int ans = 0;
deque<int> vec[3000];
int main() {
  scanf("%d", &n);
  for (int i = (0); i < (n); i++) scanf("%d", a + i);
  for (int i = (0); i < (n); i++) b[a[i]]++;
  for (int i = (0); i < (n); i++) vec[a[i]].push_back(i + 1);
  for (int i = (0); i < (3000); i++)
    if (b[i] >= 3)
      ans += 3;
    else if (b[i] == 2)
      ans += 2;
  if (ans >= 3) {
    puts("YES");
    for (int i = (0); i < (3000); i++)
      for (int j = (0); j < (vec[i].size()); j++) printf("%d ", vec[i][j]);
    puts("");
    int tmp = 0;
    for (int i = (0); i < (3000); i++)
      if (vec[i].size() > 1) {
        vec[i].push_back(vec[i].front());
        vec[i].pop_front();
        tmp = i;
        break;
      }
    for (int i = (0); i < (3000); i++)
      for (int j = (0); j < (vec[i].size()); j++) printf("%d ", vec[i][j]);
    puts("");
    if (vec[tmp].size() == 2) {
      for (int i = (tmp + 1); i < (3000); i++)
        if (vec[i].size() > 1) {
          vec[i].push_back(vec[i].front());
          vec[i].pop_front();
          tmp = i;
          break;
        }
    } else {
      vec[tmp].push_back(vec[tmp].front());
      vec[tmp].pop_front();
    }
    for (int i = (0); i < (3000); i++)
      for (int j = (0); j < (vec[i].size()); j++) printf("%d ", vec[i][j]);
    puts("");
  } else
    puts("NO");
  return 0;
}
