#include <bits/stdc++.h>
int P[100100];
int A[100100];
int K[100100];
int E[100100][2];
int main() {
  int tot = 0;
  bool F = true;
  int i, j, l, k, px, py;
  scanf("%d", &k);
  for (i = 1; i <= k; ++i) scanf("%d", &P[i]);
  for (i = 1; i <= k; ++i) {
    j = P[i];
    if (P[j] == i) {
      px = i;
      py = j;
      F = false;
    }
  }
  for (i = 1; i <= k; ++i)
    if (P[i] == i) {
      px = py = i;
      F = false;
    }
  if (F)
    printf("NO\n");
  else {
    if (px != py) {
      A[px] = A[py] = 1;
      E[++tot][1] = px;
      E[tot][2] = py;
      for (i = 1; i <= k; ++i) {
        if (A[i]) continue;
        while (A[i] == 0) {
          K[i] = px;
          E[++tot][1] = px;
          E[tot][2] = i;
          A[i] = 1;
          i = P[i];
          j = px;
          px = py;
          py = j;
        }
        if (K[i] != px) F = true;
      }
      if (F)
        printf("NO\n");
      else {
        printf("YES\n");
        for (i = 1; i < k; ++i) printf("%d %d\n", E[i][1], E[i][2]);
      }
    } else {
      printf("YES\n");
      for (i = 1; i <= k; ++i)
        if (i != px) printf("%d %d\n", i, px);
    }
  }
}
