#include <bits/stdc++.h>   using namespace std;   int main() {     long long int n, i, count, flag, j, x;     cin >> n;     long long int h[n], a[n], c[n], maxc, no2, task[n], temp, tasknumber[n][n],         flaggy;     flaggy = 0;     for (i = 0; i < n; i++) {       cin >> h[i];     }     for (i = 0; i < n; i++) {       c[i] = 0;       task[i] = i + 1;     }     for (i = (n - 1); i >= 0; i--) {       for (j = 0; j < i; j++) {         if (h[j] > h[j + 1]) {           temp = h[j + 1];           h[j + 1] = h[j];           h[j] = temp;           temp = task[j + 1];           task[j + 1] = task[j];           task[j] = temp;         }       }     }     a[0] = h[0];     count = 1;     c[0] = 1;     maxc = 1;     no2 = 0;     tasknumber[0][0] = task[0];     for (i = 1; i < n; i++) {       flag = 0;       for (j = 0; j < count; j++) {         if (h[i] == a[j]) {           flag = 1;           c[j] = c[j] + 1;           tasknumber[j][(c[j] - 1)] = task[i];           if (c[j] > maxc) {             maxc = c[j];           }           if (c[j] == 2) {             no2 = no2 + 1;           }           break;         }       }       if (flag == 1) {       } else {         count++;         a[count - 1] = h[i];         c[count - 1] = 1;         tasknumber[count - 1][0] = task[i];       }     }     if (maxc >= 3) {       cout <<  YES  << endl;       for (x = 0; x < 3; x++) {         for (i = 0; i < count; i++) {           if (c[i] == 1) {             cout << tasknumber[i][0] <<    ;           } else if (c[i] == 2) {             cout << tasknumber[i][0] <<     << tasknumber[i][1] <<    ;           } else if (c[i] == 3) {             if (x == 0) {               cout << tasknumber[i][0] <<     << tasknumber[i][1] <<                        << tasknumber[i][2] <<    ;             }             if (x == 1) {               cout << tasknumber[i][0] <<     << tasknumber[i][2] <<                        << tasknumber[i][1] <<    ;             }             if (x == 2) {               cout << tasknumber[i][1] <<     << tasknumber[i][0] <<                        << tasknumber[i][2] <<    ;             }           } else if (c[i] >= 3) {             if (x == 0) {               cout << tasknumber[i][0] <<     << tasknumber[i][1] <<                        << tasknumber[i][2] <<    ;               for (j = 3; j < c[i]; j++) {                 cout << tasknumber[i][j] <<    ;               }             }             if (x == 1) {               cout << tasknumber[i][0] <<     << tasknumber[i][2] <<                        << tasknumber[i][1] <<    ;               for (j = 3; j < c[i]; j++) {                 cout << tasknumber[i][j] <<    ;               }             }             if (x == 2) {               cout << tasknumber[i][1] <<     << tasknumber[i][0] <<                        << tasknumber[i][2] <<    ;               for (j = 3; j < c[i]; j++) {                 cout << tasknumber[i][j] <<    ;               }             }           }         }         cout << endl;       }     } else if (maxc == 2) {       if (no2 >= 2) {         cout <<  YES  << endl;         for (x = 0; x < 3; x++) {           flaggy = 0;           for (i = 0; i < count; i++) {             if (c[i] == 1) {               cout << tasknumber[i][0] <<    ;             } else if (c[i] == 2) {               flaggy = flaggy + 1;               if (x == 0) {                 if (flaggy == 1) {                   cout << tasknumber[i][0] <<     << tasknumber[i][1] <<    ;                 }                 if (flaggy == 2) {                   cout << tasknumber[i][0] <<     << tasknumber[i][1] <<    ;                 } else if (flaggy >= 3) {                   cout << tasknumber[i][0] <<     << tasknumber[i][1] <<    ;                 }               }               if (x == 1) {                 if (flaggy == 1) {                   cout << tasknumber[i][1] <<     << tasknumber[i][0] <<    ;                 }                 if (flaggy == 2) {                   cout << tasknumber[i][0] <<     << tasknumber[i][1] <<    ;                 } else if (flaggy >= 3) {                   cout << tasknumber[i][0] <<     << tasknumber[i][1] <<    ;                 }               }               if (x == 2) {                 if (flaggy == 1) {                   cout << tasknumber[i][0] <<     << tasknumber[i][1] <<    ;                 }                 if (flaggy == 2) {                   cout << tasknumber[i][1] <<     << tasknumber[i][0] <<    ;                 } else if (flaggy >= 3) {                   cout << tasknumber[i][0] <<     << tasknumber[i][1] <<    ;                 }               }             }           }           if (x == 2) {             break;           }           cout << endl;         }       } else {         cout <<  NO ;       }     } else {       cout <<  NO ;     }     return 0;   }