#include <bits/stdc++.h>
using namespace std;
int i, j, n, RT, cnt, t, p[200005], a[200005], f[200005];
int g(int i) {
  if (i == f[i]) return i;
  return f[i] = g(f[i]);
}
int main() {
  scanf("%d", &n);
  for (i = 1; i <= n; i++) f[i] = i;
  for (i = 1; i <= n; i++) {
    scanf("%d", a + i);
    if (g(i) == g(a[i])) {
      if (a[i] == i) {
        if (RT)
          p[++t] = i;
        else
          RT = i;
      } else
        p[++t] = i;
    } else
      f[g(i)] = g(a[i]);
  }
  if (!RT) RT = p[1], a[p[1]] = p[1], ++cnt;
  for (i = 1; i <= t; i++)
    if (g(p[i]) != g(RT))
      if (a[p[i]] != RT) ++cnt, a[p[i]] = RT;
  printf("%d\n", cnt);
  for (i = 1; i <= n; i++) printf("%d ", a[i]);
}
