//a=b에서 오른쪽 수 왼쪽에 넣기
//strcmp,
#include <stdio.h>
int main()
{
int a,i,j;
char temp[100]={};
char b[10001][100]={};
scanf("%d",&a);
for(i=1;i<=a;i++)
{
scanf("%s",b[i]);
}
for(i=1;i<a;i++)
{
for(j=1;j<=a-i;j++)
{
if(strcmp(b[j],b[j+1])>0)
{
strcpy(temp,b[j]);
strcpy(b[j],b[j+1]);
strcpy(b[j+1],temp);
}
}
}
for(i=1;i<=a;i++)
{
printf("%s\n",b[i]);
}
}
/*
#include <stdio.h>
int main()
{
int a[101],b,i,j,y,min;
scanf("%d",&b);
for(i=1;i<=b;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<b;i++)
{
min=i;
for(j=i+1;j<=b;j++)
{
if(a[min]<a[j])
{
min=j;
}
}
y=a[i];
a[i]=a[min];
a[min]=y;
}
for(i=1;i<=b;i++)
{
printf("%d\n",a[i]);
}
}
*/
/*
---------------------------------------------------------------
*/
//a=b에서 오른쪽 수 왼쪽에 넣기
//strcmp,
/*
#include <stdio.h>
int main()
{
int a,i,j,flag=0;
char temp[11]={};
char b[10001][11]={};
scanf("%d",&a);
for(i=1;i<=a;i++)
{
scanf("%s",b[i]);
}
for(i=1;i<a;i++)
{
flag=0;
for(j=1;j<=a-i;j++)
{
if(strcmp(b[j],b[j+1])>0)
{
flag=1;
strcpy(temp,b[j]);
strcpy(b[j],b[j+1]);
strcpy(b[j+1],temp);
}
}
if(flag==0) break;
}
for(i=1;i<=a;i++)
{
printf("%s\n",b[i]);
}
}
#include <stdio.h>
int a[10001];
int n, i, j, temp, key;
int main() {
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
}
for (i=2; i<=n; i++)
{
key=a[i];
for(j=i-1; j>=1 && a[j]>key ;j--)
{
a[j+1]=a[j];
}
a[j+1]=key;
}
for (i=1; i<=n; i++)
{
printf("%d\n", a[i]);
}
return 0;
}
//to do
삽입정렬 내림차순으로 고쳐서 1709번에 제출하기.
3105번은 숙제로 풀어오기
3014번 : 버블, 선택, 삽입 처럼 기본 정렬로 풀 수 없어. (+메모이제이션을 적용해서 풀기)
*/



