#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int co[N], col, p[N], ans, w[N], temp, to[N], n, x;
bool v[N], rec[N], exi[N];
int dfs(int x) {
  if (v[x]) {
    if (!co[x]) {
      co[x] = ++col;
      p[col] = x;
    }
    return co[x];
  }
  v[x] = 1;
  return co[x] = dfs(to[x]);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &x);
    to[i] = x;
    rec[x] = 1;
  }
  for (int i = 1; i <= n; i++) {
    temp = dfs(i);
    if (!exi[temp]) {
      exi[temp] = 1;
      w[temp] = i;
    }
    if (!rec[i]) {
      if (rec[w[temp]]) {
        w[temp] = i;
      }
    }
  }
  if (col != 1) {
    for (int i = 1; i <= col; i++) rec[w[i]] = 1;
    ans += col;
  }
  for (int i = 1; i <= n; i++)
    if (!rec[i]) ans++;
  printf("%d\n", ans);
  if (col != 1)
    for (int i = 1; i <= col; i++) {
      if (i < col)
        printf("%d %d\n", p[i], w[i + 1]);
      else
        printf("%d %d\n", p[i], w[1]);
    }
  for (int i = 1; i <= n; i++)
    if (!rec[i]) printf("%d %d\n", p[1], i);
}
