/*
   This code is in part from "Algorithms in C, Third Edition," 
   by Robert Sedgewick, Addison Wesley Longman, 1998." 
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Nmax 1000000
#define Mmax 10000000
char buf[Mmax]; int M = 0;

void selection(char *a[], int N)
  { int i, j;
    for (i = 0; i < N; i++)
      { char *t=a[i];
	int min = i;
        for (j = i+1; j < N; j++) 
            if (strcmp(a[j], a[min])<0) min = j;
	a[i]=a[min]; a[min]=t;
      } 
  }

main()
  { int i, N;
    char* a[Nmax]; 
    for (N = 0; N < Nmax; N++)
      {
        a[N] = &buf[M];
        if (scanf("%s", a[N]) == EOF) break;
        M += strlen(a[N])+1;
      }
    selection(a, N);
    for (i = 0; i < N; i++) printf("%s\n", a[i]);
  }
