#include <bits/stdc++.h>
int com[100000], v[100000], v1[100000], v2[100000];
int mat[100000][2], res;
int f(int);
int main() {
  int miem, i, a, b;
  a = 0;
  b = 0;
  scanf("%d", &miem);
  for (i = 0; i < miem; ++i) {
    scanf("%d", &com[i]);
    --com[i];
    v2[com[i]] = 1;
  }
  for (i = 0; i < miem; ++i) {
    if (!v2[i]) {
      mat[res][0] = i + 1;
      mat[res][1] = f(i) + 1;
      ++res;
      ++a;
    }
  }
  for (i = 0; i < miem; ++i) {
    if (!v[i]) {
      mat[res][0] = i + 1;
      mat[res][1] = i + 1;
      ++res;
      ++b;
      f(i);
    }
  }
  if (b == 1 && a == 0) {
    printf("0");
    return 0;
  }
  printf("%d\n", res);
  if (res > 0) {
    for (i = 1; i < res; ++i) {
      printf("%d %d\n", mat[i - 1][1], mat[i][0]);
    }
    printf("%d %d", mat[res - 1][1], mat[0][0]);
  }
  return 0;
}
int f(int j) {
  v[j] = 1;
  int r;
  if (v[com[j]] == 1) {
    r = v1[j] = com[j];
  } else if (v[com[j]] == 0) {
    r = v1[j] = f(com[j]);
  } else {
    r = v1[j] = v1[com[j]];
  }
  v[j] = 2;
  return r;
}
