#include <stdio.h>
#include <string.h>
struct Number
{
	char str[1010];
	int l;
};
int main()
{
	void sort (struct Number a[],int n);
	struct Number a[110];
	int n,i;
	while (scanf ("%d",&n)!=EOF)
	{
		getchar();
		for (i=0;i<n;i++)
		{	
			gets(a[i].str);
		    a[i].l=strlen(a[i].str);
		    a[i].str[a[i].l]='\0';
		}
		sort(a,n);
		for (i=0;i<n;i++)
			puts(a[i].str);
	}
	return 0;
}
void sort (struct Number a[],int n)
{
	int i,j;
	struct Number t;
	for (i=0;i<n-1;i++)
		for (j=0;j<n-1-i;j++)
		{
			if (a[j].l>a[j+1].l)
			{
				t=a[j]; a[j]=a[j+1]; a[j+1]=t;
			}
			if (a[j].l==a[j+1].l)
			{
				if (strcmp(a[j].str,a[j+1].str)>0)
				{
					t=a[j]; a[j]=a[j+1]; a[j+1]=t;
				}
			}
		}
}
/**************************************************************
	Problem: 2202
	User: admin
	Language: C
	Result: Accepted
	Time:22 ms
	Memory:1148 kb
****************************************************************/