3
2 1 1
 6
6 2 6 2 4 2
 2
1 2
 8
2 1 2 2 6 5 6 6
 18
2 3 4 5 2 7 8 9 10 7 11 12 14 15 13 17 18 18
 7
1 2 3 4 5 6 7
 7
4 3 2 6 3 5 2
 7
7 5 3 1 2 1 5
 7
1 6 4 4 5 6 7

1
2 2 1  0
6 2 6 2 4 2  1 
1 1 
 2 
2 2 2 2 6 2 6 6 
 5 
2 3 4 5 11 7 8 9 10 11 11 11 14 15 11 17 18 11 
 6 
1 1 1 1 1 1 1 
 1
4 3 3 6 3 5 2  1
7 5 3 1 3 1 5  4 
1 6 4 1 1 1 1 

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
public class Contest9Solution2 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();
            ArrayList<Integer> ar = new ArrayList<>();
            int[] b = new int[N + 1];
            int[] a = new int[N + 1];
            boolean[] v = new boolean[N + 1];
            for (int i = 1; i <= N; i++) {
                a[i] = in.nextInt();
                b[i] = a[i];
                if (a[i] == i) {
                    ar.add(i);
                    v[i] = true;
                    continue;
                }
            }
            int root = ar.isEmpty() ? -1 : ar.get(0);
            for (int i = 1; i <= N; i++) {
                if (v[i]) continue;
                v[i] = true;
                if (i == b[i]) continue;
                HashSet<Integer> v2 = new HashSet<>();
                v2.add(i);
                int p = b[i];
                while (true) {
                    if (v2.contains(p)) {
                        if (root == -1) {
                            root = p;
                        }
                        a[p] = root;
                        break;
                    }
                    v2.add(p);
                    if (v[p]) break;
                    v[p] = true;
                    p = b[p];
                }
            }
            for (int i = 1; i < ar.size(); i++) {
                a[ar.get(i)] = root;
            }
            int diff = 0;
            for (int i = 1; i <= N; i++) {
                if (b[i] != a[i]) diff++;
            }
            System.out.println(diff);
            for (int i = 1; i <= N; i++) {
                if (i > 1) System.out.print(' ');
                System.out.print(a[i]);
            }
            System.out.println();
        
        }

    }