#include <stdio.h>
//按顺序输出
void trace(int A[],int n)
{
int i;
for(i=0;i<n;i++){
if(i>0) printf(" ");
printf("%d",A[i]);
}
printf("\n");
}
//(0起点数组)
void insertionSort(int A[],int n)
{
int i,j,v;
for(i=1;i<n;i++){
v=A[i];//v为未排序部分第一个元素
j=i-1;//j从已排序部分最后一个元素开始
while((j>=0)&&A[j]>v){//在已排序部分,将所有比v大的元素后移一位
A[j+1]=A[j];
j--;
}
A[j+1]=v;//将已取出的元素插入空位
trace(A,n);
}
}
int main()
{
int n,i,j;
scanf("%d",&n);
int A[n];
for(i=0;i<=n-1;i++)
scanf("%d",&A[i]);
trace(A,n);
insertionSort(A,n);
return 0;
}