import java.util.Scanner;

public class Main{
	public static void main(String[] args){
		//データ読み込み
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int a[] = new int[n];
		for(int i = 0; i < n; i++){
			a[i] = sc.nextInt();	
		}
		
		//入れ替えの回数を記録するカウンター
		int counter = 0;
		
		for(int i = 0; i < n; i++){
			//各iごとに最小の値が格納されている配列番号の変数
			int minj = i;
			
			for(int j = i + 1; j < n; j++){
				if(a[j] < a[minj]){
					minj = j;
				}
			}
			
			//i番目に格納されている値が、最小でない場合、入れ替え
			if(minj != i){
				int temp = a[i];
				a[i] = a[minj];
				a[minj] = temp;
				
				//入れ替え回数の加算
				counter++;
			}
		}
		
		//結果の出力
		System.out.print(a[0]);
		for(int i = 1; i < n; i++){
			System.out.print(" " + a[i]);
		}
		System.out.print("\n");
		System.out.println(counter);
	}
} import java.util.Scanner; Scanner java.util public class Main{
	public static void main(String[] args){
		//データ読み込み
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int a[] = new int[n];
		for(int i = 0; i < n; i++){
			a[i] = sc.nextInt();	
		}
		
		//入れ替えの回数を記録するカウンター
		int counter = 0;
		
		for(int i = 0; i < n; i++){
			//各iごとに最小の値が格納されている配列番号の変数
			int minj = i;
			
			for(int j = i + 1; j < n; j++){
				if(a[j] < a[minj]){
					minj = j;
				}
			}
			
			//i番目に格納されている値が、最小でない場合、入れ替え
			if(minj != i){
				int temp = a[i];
				a[i] = a[minj];
				a[minj] = temp;
				
				//入れ替え回数の加算
				counter++;
			}
		}
		
		//結果の出力
		System.out.print(a[0]);
		for(int i = 1; i < n; i++){
			System.out.print(" " + a[i]);
		}
		System.out.print("\n");
		System.out.println(counter);
	}
} Main public static void main(String[] args){
		//データ読み込み
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int a[] = new int[n];
		for(int i = 0; i < n; i++){
			a[i] = sc.nextInt();	
		}
		
		//入れ替えの回数を記録するカウンター
		int counter = 0;
		
		for(int i = 0; i < n; i++){
			//各iごとに最小の値が格納されている配列番号の変数
			int minj = i;
			
			for(int j = i + 1; j < n; j++){
				if(a[j] < a[minj]){
					minj = j;
				}
			}
			
			//i番目に格納されている値が、最小でない場合、入れ替え
			if(minj != i){
				int temp = a[i];
				a[i] = a[minj];
				a[minj] = temp;
				
				//入れ替え回数の加算
				counter++;
			}
		}
		
		//結果の出力
		System.out.print(a[0]);
		for(int i = 1; i < n; i++){
			System.out.print(" " + a[i]);
		}
		System.out.print("\n");
		System.out.println(counter);
	} main {
		//データ読み込み
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int a[] = new int[n];
		for(int i = 0; i < n; i++){
			a[i] = sc.nextInt();	
		}
		
		//入れ替えの回数を記録するカウンター
		int counter = 0;
		
		for(int i = 0; i < n; i++){
			//各iごとに最小の値が格納されている配列番号の変数
			int minj = i;
			
			for(int j = i + 1; j < n; j++){
				if(a[j] < a[minj]){
					minj = j;
				}
			}
			
			//i番目に格納されている値が、最小でない場合、入れ替え
			if(minj != i){
				int temp = a[i];
				a[i] = a[minj];
				a[minj] = temp;
				
				//入れ替え回数の加算
				counter++;
			}
		}
		
		//結果の出力
		System.out.print(a[0]);
		for(int i = 1; i < n; i++){
			System.out.print(" " + a[i]);
		}
		System.out.print("\n");
		System.out.println(counter);
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n = sc.nextInt(); n sc.nextInt() sc.nextInt sc int a[] = new int[n]; a new int[n] n for(int i = 0; i < n; i++){
			a[i] = sc.nextInt();	
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			a[i] = sc.nextInt();	
		} {
			a[i] = sc.nextInt();	
		} a[i] = sc.nextInt() a[i] a i sc.nextInt() sc.nextInt sc int counter = 0; counter 0 for(int i = 0; i < n; i++){
			//各iごとに最小の値が格納されている配列番号の変数
			int minj = i;
			
			for(int j = i + 1; j < n; j++){
				if(a[j] < a[minj]){
					minj = j;
				}
			}
			
			//i番目に格納されている値が、最小でない場合、入れ替え
			if(minj != i){
				int temp = a[i];
				a[i] = a[minj];
				a[minj] = temp;
				
				//入れ替え回数の加算
				counter++;
			}
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			//各iごとに最小の値が格納されている配列番号の変数
			int minj = i;
			
			for(int j = i + 1; j < n; j++){
				if(a[j] < a[minj]){
					minj = j;
				}
			}
			
			//i番目に格納されている値が、最小でない場合、入れ替え
			if(minj != i){
				int temp = a[i];
				a[i] = a[minj];
				a[minj] = temp;
				
				//入れ替え回数の加算
				counter++;
			}
		} {
			//各iごとに最小の値が格納されている配列番号の変数
			int minj = i;
			
			for(int j = i + 1; j < n; j++){
				if(a[j] < a[minj]){
					minj = j;
				}
			}
			
			//i番目に格納されている値が、最小でない場合、入れ替え
			if(minj != i){
				int temp = a[i];
				a[i] = a[minj];
				a[minj] = temp;
				
				//入れ替え回数の加算
				counter++;
			}
		} int minj = i; minj i for(int j = i + 1; j < n; j++){
				if(a[j] < a[minj]){
					minj = j;
				}
			} int j = i + 1; int j = i + 1; j i + 1 i 1 j < n j n j++ j++ j {
				if(a[j] < a[minj]){
					minj = j;
				}
			} {
				if(a[j] < a[minj]){
					minj = j;
				}
			} if(a[j] < a[minj]){
					minj = j;
				} a[j] < a[minj] a[j] a j a[minj] a minj {
					minj = j;
				} minj = j minj j if(minj != i){
				int temp = a[i];
				a[i] = a[minj];
				a[minj] = temp;
				
				//入れ替え回数の加算
				counter++;
			} minj != i minj i {
				int temp = a[i];
				a[i] = a[minj];
				a[minj] = temp;
				
				//入れ替え回数の加算
				counter++;
			} int temp = a[i]; temp a[i] a i a[i] = a[minj] a[i] a i a[minj] a minj a[minj] = temp a[minj] a minj temp counter++ counter System.out.print(a[0]) System.out.print System.out System System.out a[0] a 0 for(int i = 1; i < n; i++){
			System.out.print(" " + a[i]);
		} int i = 1; int i = 1; i 1 i < n i n i++ i++ i {
			System.out.print(" " + a[i]);
		} {
			System.out.print(" " + a[i]);
		} System.out.print(" " + a[i]) System.out.print System.out System System.out " " + a[i] " " a[i] a i System.out.print("\n") System.out.print System.out System System.out "\n" System.out.println(counter) System.out.println System.out System System.out counter String[] args args public class Main{
	public static void main(String[] args){
		//データ読み込み
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int a[] = new int[n];
		for(int i = 0; i < n; i++){
			a[i] = sc.nextInt();	
		}
		
		//入れ替えの回数を記録するカウンター
		int counter = 0;
		
		for(int i = 0; i < n; i++){
			//各iごとに最小の値が格納されている配列番号の変数
			int minj = i;
			
			for(int j = i + 1; j < n; j++){
				if(a[j] < a[minj]){
					minj = j;
				}
			}
			
			//i番目に格納されている値が、最小でない場合、入れ替え
			if(minj != i){
				int temp = a[i];
				a[i] = a[minj];
				a[minj] = temp;
				
				//入れ替え回数の加算
				counter++;
			}
		}
		
		//結果の出力
		System.out.print(a[0]);
		for(int i = 1; i < n; i++){
			System.out.print(" " + a[i]);
		}
		System.out.print("\n");
		System.out.println(counter);
	}
} public class Main{
	public static void main(String[] args){
		//データ読み込み
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int a[] = new int[n];
		for(int i = 0; i < n; i++){
			a[i] = sc.nextInt();	
		}
		
		//入れ替えの回数を記録するカウンター
		int counter = 0;
		
		for(int i = 0; i < n; i++){
			//各iごとに最小の値が格納されている配列番号の変数
			int minj = i;
			
			for(int j = i + 1; j < n; j++){
				if(a[j] < a[minj]){
					minj = j;
				}
			}
			
			//i番目に格納されている値が、最小でない場合、入れ替え
			if(minj != i){
				int temp = a[i];
				a[i] = a[minj];
				a[minj] = temp;
				
				//入れ替え回数の加算
				counter++;
			}
		}
		
		//結果の出力
		System.out.print(a[0]);
		for(int i = 1; i < n; i++){
			System.out.print(" " + a[i]);
		}
		System.out.print("\n");
		System.out.println(counter);
	}
} Main
import java.util.Scanner;

public class Main{
	public static void main(String[] args){
		//データ読み込み
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int a[] = new int[n];
		for(int i = 0; i < n; i++){
			a[i] = sc.nextInt();	
		}
		
		//入れ替えの回数を記録するカウンター
		int counter = 0;
		
		for(int i = 0; i < n; i++){
			//各iごとに最小の値が格納されている配列番号の変数
			int minj = i;
			
			for(int j = i + 1; j < n; j++){
				if(a[j] < a[minj]){
					minj = j;
				}
			}
			
			//i番目に格納されている値が、最小でない場合、入れ替え
			if(minj != i){
				int temp = a[i];
				a[i] = a[minj];
				a[minj] = temp;
				
				//入れ替え回数の加算
				counter++;
			}
		}
		
		//結果の出力
		System.out.print(a[0]);
		for(int i = 1; i < n; i++){
			System.out.print(" " + a[i]);
		}
		System.out.print("\n");
		System.out.println(counter);
	}
}
