#include <bits/stdc++.h>
using namespace std;
template <typename C>
void MA(C& a, C b) {
  if (a < b) a = b;
}
template <typename C>
void MI(C& a, C b) {
  if (a > b) a = b;
}
int p[100010];
int wyn[100010];
int n;
void nie() {
  puts("NO");
  exit(0);
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &p[i]);
    p[i]--;
  }
  for (int i = 0; i < n; i++) {
    if (p[i] == i) {
      puts("YES");
      for (int j = 0; j < n; j++) {
        if (i != j) printf("%d %d\n", i + 1, j + 1);
      }
      return 0;
    }
  }
  for (int i = 0; i < n; i++) wyn[i] = -1;
  for (int i = 0; i < n; i++) {
    if (p[p[i]] == i) {
      int k = p[i];
      for (int j = 0; j < n; j++) {
        if (wyn[j] == -1 && j != i && j != k) {
          int ak = j;
          int w = i;
          while (wyn[ak] == -1) {
            wyn[ak] = w;
            ak = p[ak];
            w = i + k - w;
          }
          if (w != i) nie();
        }
      }
      puts("YES");
      printf("%d %d\n", i + 1, k + 1);
      for (int j = 0; j < n; j++) {
        if (i != j && j != k) printf("%d %d\n", wyn[j] + 1, j + 1);
      }
      return 0;
    }
  }
  nie();
}
