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 Solve{
    static int[] par;
    static int[] p;
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        par=new int[n+1];
        p=new int[n+1];
        for(int i=0;i<=n;i++){
            p[i]=i;
        }
        int pa=-1;
        for(int i=1;i<=n;i++){
            par[i]=sc.nextInt();
            if(pa<0 && par[i]==i)pa=i;
            int a=find(i);
            int b=find(par[i]);
            if(a!=b)p[a]=b;
        }
        if(pa<0){
            for(int i=1;i<=n;i++){
                if(p[i]==i){
                    pa=i;
                    break;
                }
            }
        }
        int ans=0;
        for(int i=1;i<=n;i++){
            if(p[i]==i && par[i]!=pa){
                par[i]=pa;
                ans++;
            }
        }
        System.out.println(ans);

            for(int i=1;i<=n;i++)System.out.print(par[i]+" ");
   
        
    }
    static int find(int n){
        if(p[n]==n)return n;
         return p[n]=find(p[n]);
    }
}
