
import java.util.Scanner;

/**
 * ZAKIREN第5章
 * @author K.Yamauchi
 *
 */
public class Main {

	/**
	 *
	 * @param args
	 */
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in); // 入力
		int n = Integer.parseInt(scan.nextLine()); // 要素数

		// ソート対象配列の読み込み
		String[] targetArrayStr = scan.nextLine().split(" ");
		int[] targetArray = new int[targetArrayStr.length];
		for (int i = 0; i < targetArrayStr.length; i++) {
			targetArray[i] = Integer.parseInt(targetArrayStr[i]);
		}

		// 読み込み終了
		scan.close();

		for (int k = 0; k < targetArray.length; k++) {
			if (k < targetArray.length - 1) {
				System.out.print(targetArray[k] + " ");
			} else {
				System.out.println(targetArray[k]);
			}
		}

		// ソート呼び出し
		insertionSort(targetArray, n);

	}

	/**
	 * 指定された整数型配列を挿入ソートします。
	 * @param targetArray ソートしたい配列
	 * @param n 要素数
	 * @return 入れ替え回数
	 */
	private static void insertionSort(int[] targetArray, int n) {

		for (int i = 1; i < n; i++) {
			int num = targetArray[i];
			int j = i -1;

			while (j >= 0 && targetArray[j] > num) {
				targetArray[j+1] = targetArray[j];
				j--;
			}
			targetArray[j+1] = num;

			for (int k = 0; k < targetArray.length; k++) {
				if (k < targetArray.length - 1) {
					System.out.print(targetArray[k] + " ");
				} else {
					System.out.println(targetArray[k]);
				}
			}

		}

	}

}
 import java.util.Scanner; Scanner java.util public class Main {

	/**
	 *
	 * @param args
	 */
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in); // 入力
		int n = Integer.parseInt(scan.nextLine()); // 要素数

		// ソート対象配列の読み込み
		String[] targetArrayStr = scan.nextLine().split(" ");
		int[] targetArray = new int[targetArrayStr.length];
		for (int i = 0; i < targetArrayStr.length; i++) {
			targetArray[i] = Integer.parseInt(targetArrayStr[i]);
		}

		// 読み込み終了
		scan.close();

		for (int k = 0; k < targetArray.length; k++) {
			if (k < targetArray.length - 1) {
				System.out.print(targetArray[k] + " ");
			} else {
				System.out.println(targetArray[k]);
			}
		}

		// ソート呼び出し
		insertionSort(targetArray, n);

	}

	/**
	 * 指定された整数型配列を挿入ソートします。
	 * @param targetArray ソートしたい配列
	 * @param n 要素数
	 * @return 入れ替え回数
	 */
	private static void insertionSort(int[] targetArray, int n) {

		for (int i = 1; i < n; i++) {
			int num = targetArray[i];
			int j = i -1;

			while (j >= 0 && targetArray[j] > num) {
				targetArray[j+1] = targetArray[j];
				j--;
			}
			targetArray[j+1] = num;

			for (int k = 0; k < targetArray.length; k++) {
				if (k < targetArray.length - 1) {
					System.out.print(targetArray[k] + " ");
				} else {
					System.out.println(targetArray[k]);
				}
			}

		}

	}

} Main /**
	 *
	 * @param args
	 */
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in); // 入力
		int n = Integer.parseInt(scan.nextLine()); // 要素数

		// ソート対象配列の読み込み
		String[] targetArrayStr = scan.nextLine().split(" ");
		int[] targetArray = new int[targetArrayStr.length];
		for (int i = 0; i < targetArrayStr.length; i++) {
			targetArray[i] = Integer.parseInt(targetArrayStr[i]);
		}

		// 読み込み終了
		scan.close();

		for (int k = 0; k < targetArray.length; k++) {
			if (k < targetArray.length - 1) {
				System.out.print(targetArray[k] + " ");
			} else {
				System.out.println(targetArray[k]);
			}
		}

		// ソート呼び出し
		insertionSort(targetArray, n);

	} main {

		Scanner scan = new Scanner(System.in); // 入力
		int n = Integer.parseInt(scan.nextLine()); // 要素数

		// ソート対象配列の読み込み
		String[] targetArrayStr = scan.nextLine().split(" ");
		int[] targetArray = new int[targetArrayStr.length];
		for (int i = 0; i < targetArrayStr.length; i++) {
			targetArray[i] = Integer.parseInt(targetArrayStr[i]);
		}

		// 読み込み終了
		scan.close();

		for (int k = 0; k < targetArray.length; k++) {
			if (k < targetArray.length - 1) {
				System.out.print(targetArray[k] + " ");
			} else {
				System.out.println(targetArray[k]);
			}
		}

		// ソート呼び出し
		insertionSort(targetArray, n);

	} Scanner scan = new Scanner(System.in); scan new Scanner(System.in) int n = Integer.parseInt(scan.nextLine()); n Integer.parseInt(scan.nextLine()) Integer.parseInt Integer scan.nextLine() scan.nextLine scan String[] targetArrayStr = scan.nextLine().split(" "); targetArrayStr scan.nextLine().split(" ") scan.nextLine().split scan.nextLine() scan.nextLine scan " " int[] targetArray = new int[targetArrayStr.length]; targetArray new int[targetArrayStr.length] targetArrayStr.length targetArrayStr targetArrayStr.length for (int i = 0; i < targetArrayStr.length; i++) {
			targetArray[i] = Integer.parseInt(targetArrayStr[i]);
		} int i = 0; int i = 0; i 0 i < targetArrayStr.length i targetArrayStr.length targetArrayStr targetArrayStr.length i++ i++ i {
			targetArray[i] = Integer.parseInt(targetArrayStr[i]);
		} {
			targetArray[i] = Integer.parseInt(targetArrayStr[i]);
		} targetArray[i] = Integer.parseInt(targetArrayStr[i]) targetArray[i] targetArray i Integer.parseInt(targetArrayStr[i]) Integer.parseInt Integer targetArrayStr[i] targetArrayStr i scan.close() scan.close scan for (int k = 0; k < targetArray.length; k++) {
			if (k < targetArray.length - 1) {
				System.out.print(targetArray[k] + " ");
			} else {
				System.out.println(targetArray[k]);
			}
		} int k = 0; int k = 0; k 0 k < targetArray.length k targetArray.length targetArray targetArray.length k++ k++ k {
			if (k < targetArray.length - 1) {
				System.out.print(targetArray[k] + " ");
			} else {
				System.out.println(targetArray[k]);
			}
		} {
			if (k < targetArray.length - 1) {
				System.out.print(targetArray[k] + " ");
			} else {
				System.out.println(targetArray[k]);
			}
		} if (k < targetArray.length - 1) {
				System.out.print(targetArray[k] + " ");
			} else {
				System.out.println(targetArray[k]);
			} k < targetArray.length - 1 k targetArray.length - 1 targetArray.length targetArray targetArray.length 1 {
				System.out.print(targetArray[k] + " ");
			} System.out.print(targetArray[k] + " ") System.out.print System.out System System.out targetArray[k] + " " targetArray[k] targetArray k " " {
				System.out.println(targetArray[k]);
			} System.out.println(targetArray[k]) System.out.println System.out System System.out targetArray[k] targetArray k insertionSort(targetArray, n) insertionSort targetArray n String[] args args /**
	 * 指定された整数型配列を挿入ソートします。
	 * @param targetArray ソートしたい配列
	 * @param n 要素数
	 * @return 入れ替え回数
	 */
	private static void insertionSort(int[] targetArray, int n) {

		for (int i = 1; i < n; i++) {
			int num = targetArray[i];
			int j = i -1;

			while (j >= 0 && targetArray[j] > num) {
				targetArray[j+1] = targetArray[j];
				j--;
			}
			targetArray[j+1] = num;

			for (int k = 0; k < targetArray.length; k++) {
				if (k < targetArray.length - 1) {
					System.out.print(targetArray[k] + " ");
				} else {
					System.out.println(targetArray[k]);
				}
			}

		}

	} insertionSort {

		for (int i = 1; i < n; i++) {
			int num = targetArray[i];
			int j = i -1;

			while (j >= 0 && targetArray[j] > num) {
				targetArray[j+1] = targetArray[j];
				j--;
			}
			targetArray[j+1] = num;

			for (int k = 0; k < targetArray.length; k++) {
				if (k < targetArray.length - 1) {
					System.out.print(targetArray[k] + " ");
				} else {
					System.out.println(targetArray[k]);
				}
			}

		}

	} for (int i = 1; i < n; i++) {
			int num = targetArray[i];
			int j = i -1;

			while (j >= 0 && targetArray[j] > num) {
				targetArray[j+1] = targetArray[j];
				j--;
			}
			targetArray[j+1] = num;

			for (int k = 0; k < targetArray.length; k++) {
				if (k < targetArray.length - 1) {
					System.out.print(targetArray[k] + " ");
				} else {
					System.out.println(targetArray[k]);
				}
			}

		} int i = 1; int i = 1; i 1 i < n i n i++ i++ i {
			int num = targetArray[i];
			int j = i -1;

			while (j >= 0 && targetArray[j] > num) {
				targetArray[j+1] = targetArray[j];
				j--;
			}
			targetArray[j+1] = num;

			for (int k = 0; k < targetArray.length; k++) {
				if (k < targetArray.length - 1) {
					System.out.print(targetArray[k] + " ");
				} else {
					System.out.println(targetArray[k]);
				}
			}

		} {
			int num = targetArray[i];
			int j = i -1;

			while (j >= 0 && targetArray[j] > num) {
				targetArray[j+1] = targetArray[j];
				j--;
			}
			targetArray[j+1] = num;

			for (int k = 0; k < targetArray.length; k++) {
				if (k < targetArray.length - 1) {
					System.out.print(targetArray[k] + " ");
				} else {
					System.out.println(targetArray[k]);
				}
			}

		} int num = targetArray[i]; num targetArray[i] targetArray i int j = i -1; j i -1 i 1 while (j >= 0 && targetArray[j] > num) {
				targetArray[j+1] = targetArray[j];
				j--;
			} j >= 0 && targetArray[j] > num j >= 0 j 0 targetArray[j] > num targetArray[j] targetArray j num {
				targetArray[j+1] = targetArray[j];
				j--;
			} targetArray[j+1] = targetArray[j] targetArray[j+1] targetArray j+1 j 1 targetArray[j] targetArray j j-- j targetArray[j+1] = num targetArray[j+1] targetArray j+1 j 1 num for (int k = 0; k < targetArray.length; k++) {
				if (k < targetArray.length - 1) {
					System.out.print(targetArray[k] + " ");
				} else {
					System.out.println(targetArray[k]);
				}
			} int k = 0; int k = 0; k 0 k < targetArray.length k targetArray.length targetArray targetArray.length k++ k++ k {
				if (k < targetArray.length - 1) {
					System.out.print(targetArray[k] + " ");
				} else {
					System.out.println(targetArray[k]);
				}
			} {
				if (k < targetArray.length - 1) {
					System.out.print(targetArray[k] + " ");
				} else {
					System.out.println(targetArray[k]);
				}
			} if (k < targetArray.length - 1) {
					System.out.print(targetArray[k] + " ");
				} else {
					System.out.println(targetArray[k]);
				} k < targetArray.length - 1 k targetArray.length - 1 targetArray.length targetArray targetArray.length 1 {
					System.out.print(targetArray[k] + " ");
				} System.out.print(targetArray[k] + " ") System.out.print System.out System System.out targetArray[k] + " " targetArray[k] targetArray k " " {
					System.out.println(targetArray[k]);
				} System.out.println(targetArray[k]) System.out.println System.out System System.out targetArray[k] targetArray k int[] targetArray targetArray int n n public class Main {

	/**
	 *
	 * @param args
	 */
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in); // 入力
		int n = Integer.parseInt(scan.nextLine()); // 要素数

		// ソート対象配列の読み込み
		String[] targetArrayStr = scan.nextLine().split(" ");
		int[] targetArray = new int[targetArrayStr.length];
		for (int i = 0; i < targetArrayStr.length; i++) {
			targetArray[i] = Integer.parseInt(targetArrayStr[i]);
		}

		// 読み込み終了
		scan.close();

		for (int k = 0; k < targetArray.length; k++) {
			if (k < targetArray.length - 1) {
				System.out.print(targetArray[k] + " ");
			} else {
				System.out.println(targetArray[k]);
			}
		}

		// ソート呼び出し
		insertionSort(targetArray, n);

	}

	/**
	 * 指定された整数型配列を挿入ソートします。
	 * @param targetArray ソートしたい配列
	 * @param n 要素数
	 * @return 入れ替え回数
	 */
	private static void insertionSort(int[] targetArray, int n) {

		for (int i = 1; i < n; i++) {
			int num = targetArray[i];
			int j = i -1;

			while (j >= 0 && targetArray[j] > num) {
				targetArray[j+1] = targetArray[j];
				j--;
			}
			targetArray[j+1] = num;

			for (int k = 0; k < targetArray.length; k++) {
				if (k < targetArray.length - 1) {
					System.out.print(targetArray[k] + " ");
				} else {
					System.out.println(targetArray[k]);
				}
			}

		}

	}

} public class Main {

	/**
	 *
	 * @param args
	 */
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in); // 入力
		int n = Integer.parseInt(scan.nextLine()); // 要素数

		// ソート対象配列の読み込み
		String[] targetArrayStr = scan.nextLine().split(" ");
		int[] targetArray = new int[targetArrayStr.length];
		for (int i = 0; i < targetArrayStr.length; i++) {
			targetArray[i] = Integer.parseInt(targetArrayStr[i]);
		}

		// 読み込み終了
		scan.close();

		for (int k = 0; k < targetArray.length; k++) {
			if (k < targetArray.length - 1) {
				System.out.print(targetArray[k] + " ");
			} else {
				System.out.println(targetArray[k]);
			}
		}

		// ソート呼び出し
		insertionSort(targetArray, n);

	}

	/**
	 * 指定された整数型配列を挿入ソートします。
	 * @param targetArray ソートしたい配列
	 * @param n 要素数
	 * @return 入れ替え回数
	 */
	private static void insertionSort(int[] targetArray, int n) {

		for (int i = 1; i < n; i++) {
			int num = targetArray[i];
			int j = i -1;

			while (j >= 0 && targetArray[j] > num) {
				targetArray[j+1] = targetArray[j];
				j--;
			}
			targetArray[j+1] = num;

			for (int k = 0; k < targetArray.length; k++) {
				if (k < targetArray.length - 1) {
					System.out.print(targetArray[k] + " ");
				} else {
					System.out.println(targetArray[k]);
				}
			}

		}

	}

} Main

import java.util.Scanner;

/**
 * ZAKIREN第5章
 * @author K.Yamauchi
 *
 */
public class Main {

	/**
	 *
	 * @param args
	 */
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in); // 入力
		int n = Integer.parseInt(scan.nextLine()); // 要素数

		// ソート対象配列の読み込み
		String[] targetArrayStr = scan.nextLine().split(" ");
		int[] targetArray = new int[targetArrayStr.length];
		for (int i = 0; i < targetArrayStr.length; i++) {
			targetArray[i] = Integer.parseInt(targetArrayStr[i]);
		}

		// 読み込み終了
		scan.close();

		for (int k = 0; k < targetArray.length; k++) {
			if (k < targetArray.length - 1) {
				System.out.print(targetArray[k] + " ");
			} else {
				System.out.println(targetArray[k]);
			}
		}

		// ソート呼び出し
		insertionSort(targetArray, n);

	}

	/**
	 * 指定された整数型配列を挿入ソートします。
	 * @param targetArray ソートしたい配列
	 * @param n 要素数
	 * @return 入れ替え回数
	 */
	private static void insertionSort(int[] targetArray, int n) {

		for (int i = 1; i < n; i++) {
			int num = targetArray[i];
			int j = i -1;

			while (j >= 0 && targetArray[j] > num) {
				targetArray[j+1] = targetArray[j];
				j--;
			}
			targetArray[j+1] = num;

			for (int k = 0; k < targetArray.length; k++) {
				if (k < targetArray.length - 1) {
					System.out.print(targetArray[k] + " ");
				} else {
					System.out.println(targetArray[k]);
				}
			}

		}

	}

}

