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.*;

public class  c9_2 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n =in.nextInt();
		int[] p = new int[n+1];
		for (int i = 1; i < p.length; i++) {
			p[i] = in.nextInt();
		}
		int root = -1;
		int numchanges = 0;
		int[] seen = new int[n+1];
		for(int i =1; i <= n; i++){
			if(p[i] == i){
				root = i;
				seen[i] = n+1;
				break;
			}
		}
		for(int a = 1; a <=n; a++){
			if(seen[a] != 0) continue;
			seen[a] = a;
			int at = a;
			while(seen[p[at]] == 0){
				at = p[at];
				seen[at] = a;
			}
			if(seen[p[at]] == a){
				numchanges++;
				if(root != -1){
					p[at] = root;
				}
				else{
					p[at] = at;
					root = at;
				}
			}
		}
		System.out.println(numchanges);
		for(int i =1; i <= n; i++){
			System.out.print(p[i] + " ");
		}
		System.out.println();
		in.close();
	}

}