#include <bits/stdc++.h>
using namespace std;
int fw[100005], s[100005], t[100005];
bool r[100005], v[100005];
int res = 0;
void dfs(int i) {
  v[i] = true;
  if (v[fw[i]]) {
    t[res] = i;
  } else {
    dfs(fw[i]);
  }
}
int main() {
  int n = 0;
  ios::sync_with_stdio(false);
  memset(fw, 0, sizeof(fw));
  memset(r, true, sizeof(r));
  memset(v, false, sizeof(v));
  cin >> n;
  int num = 0;
  for (int i = 1; i <= n; ++i) {
    cin >> fw[i];
    r[fw[i]] = false;
  }
  for (int i = 1; i <= n; ++i) {
    if (r[i] && !v[i]) {
      ++res;
      s[res] = i;
      dfs(i);
    }
  }
  int cur = res;
  for (int i = 1; i <= n; ++i) {
    if (!v[i]) {
      ++res;
      s[res] = i;
      dfs(i);
    }
  }
  if (cur == 0 && res == 1) {
    cout << 0 << endl;
  } else {
    cout << res << endl;
    for (int i = 1; i <= res; ++i) {
      cout << t[i] << " " << s[i % res + 1] << endl;
    }
  }
  return 0;
}
