#include #include #include #define MAX_K 100 #define L 100 static char *words[2 * MAX_K + 1]; static void read_words (int *n, int k, char **tgt) { char buffer[L + 1]; while (*n > 0 && k-- > 0) { scanf ("%s", buffer); tgt[k] = strdup (buffer); (*n)--; } while (k-- > 0) tgt[k] = NULL; } static int cmps (const void *a, const void *b) { const char *sa = *(const char **) a; const char *sb = *(const char **) b; if (!sa) return 1; if (!sb) return -1; return strcmp (sa, sb); } int main(void) { int n, k, i; scanf ("%d%d", &n, &k); read_words (&n, k, words + k); while (1) { read_words (&n, k, words); qsort (words, 2 * k, sizeof (char *), cmps); if (!n) break; for (i = 0; i < k; i++) { puts (words[i]); free (words[i]); } } for (i = 0; words[i]; i++) { puts (words[i]); free (words[i]); } return 0; }