#include <bits/stdc++.h>
int p[100100], n, vis[100100], id, i;
int main() {
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%d", p + i);
    if (i == p[i]) {
      puts("YES");
      for (int j = 1; j <= n; j++)
        if (i != j) printf("%d %d\n", i, j);
      return 0;
    }
  }
  for (i = 1; i <= n; i++)
    if (!vis[i]) {
      int c = 0, x = i;
      while (!vis[x]) {
        vis[x] = 1;
        x = p[x];
        c++;
      }
      x = p[i];
      vis[i] = c;
      while (x != i) vis[x] = c, x = p[x];
      if (c == 2) id = i;
    }
  if (!id)
    puts("NO");
  else {
    for (i = 1; i <= n; i++)
      if (vis[i] % 2 != 0) break;
    if (i <= n)
      puts("NO");
    else {
      puts("YES");
      printf("%d %d\n", id, p[id]);
      vis[id] = vis[p[id]] = 0;
      for (int j = 1; j <= n; j++)
        if (vis[j]) {
          int k = vis[j] / 2, x = j;
          while (k--) {
            vis[x] = 0;
            printf("%d %d\n", id, x);
            x = p[x];
            vis[x] = 0;
            printf("%d %d\n", p[id], x);
            x = p[x];
          }
        }
    }
  }
  return 0;
}
