#include <stdio.h>
#include <string.h>
inline void scan(int *a) {
register char c=0;
while (c < 33)
c = getchar_unlocked();
*a = 0;
while (c > 33) {
*a = *a * 10 + c - '0';
c = getchar_unlocked();
}
}
void shellsort(char s[][10001][14], int n) {
unsigned int gaps[] = {1, 5, 19, 41, 109, 209, 505, 929, 2161, 3905, 8929};
int i, j, k;
int gap;
char temp[14];
for (k = 10; k >= 0; k --) {
gap = gaps[k];
for (i = gap; i < n; i++) {
for (j
= i
; j
>= gap
&& strcmp(s
[0][j
-gap
], temp
) > 0; j
-= gap
) }
}
return;
}
void shellsort2(char s[10001][14], int n) {
unsigned int gaps[] = {1, 5, 19, 41, 109, 209, 505, 929, 2161, 3905, 8929};
int i, j, k;
int gap;
char temp[14];
for (k = 10; k >= 0; k --) {
gap = gaps[k];
for (i = gap; i < n; i++) {
for (j
= i
; j
>= gap
&& strcmp(s
[j
-gap
], temp
) > 0; j
-= gap
) }
}
return;
}
int binsearch(char s[][10001][14], char x[], int low, int high) {
int mid;
while (low <= high) {
mid = (low+high) / 2;
high = mid - 1;
else if (strcmp(x
, s
[0][mid
]) > 0) low = mid + 1;
else
return mid;
}
}
int binsearch2(char s[10001][14], char x[], int low, int high) {
int mid;
while (low <= high) {
mid = (low+high) / 2;
high = mid - 1;
else if (strcmp(x
, s
[mid
]) > 0) low = mid + 1;
else
return mid;
}
}
char a[2][10001][14];
char b[10001][14];
int v1[10001], v2[10001];
main()
{
int n, m;
int c, i, j, k, l;
char temp[14];
int maxchef = 0, maxcountry = 0;
char CHEF[14], COUNTRY[14];
scan(&n);
scan(&m);
j = 0;
while (n--) {
i = 0;
a[0][j][i++] = c;
a[0][j][i] = '\0';
i = 0;
a[1][j][i++] = c;
a[1][j][i] = '\0';
j++;
}
shellsort(a, j);
shellsort2(b, j);
while (m--) {
i = 0;
while ((c
= getchar()) != '\n' && c
!= EOF
) temp[i++] = c;
temp[i] = '\0';
k = binsearch(a, temp, 0, j-1);
v1[k]++;
l = binsearch2(b, a[1][k], 0, j-1);
v2[l]++;
}
maxchef = v1[0];
maxcountry = v2[0];
for (i = 1; i < j; i++) {
if (maxchef == v1[i]) {
if (strcmp(a
[0][i
], CHEF
) < 0) { }
}
else if (maxchef < v1[i]) {
maxchef = v1[i];
}
if (maxcountry == v2[i]) {
if (strcmp(b
[i
], COUNTRY
) < 0) { }
}
else if (maxcountry < v2[i]) {
maxcountry = v2[i];
}
}
printf("%s\n%s\n", COUNTRY
, CHEF
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCmlubGluZSB2b2lkIHNjYW4oaW50ICphKSB7CiAgICByZWdpc3RlciBjaGFyIGM9MDsKCXdoaWxlIChjIDwgMzMpCgkJYyA9IGdldGNoYXJfdW5sb2NrZWQoKTsKCSphID0gMDsJCgl3aGlsZSAoYyA+IDMzKSB7CgkJKmEgPSAqYSAqIDEwICsgYyAtICcwJzsKCQljID0gZ2V0Y2hhcl91bmxvY2tlZCgpOwoJfQp9Cgp2b2lkIHNoZWxsc29ydChjaGFyIHNbXVsxMDAwMV1bMTRdLCBpbnQgbikgewoJdW5zaWduZWQgaW50IGdhcHNbXSA9IHsxLCA1LCAxOSwgNDEsIDEwOSwgMjA5LCA1MDUsIDkyOSwgMjE2MSwgMzkwNSwgODkyOX07CgkKCWludCBpLCBqLCBrOwoJaW50IGdhcDsKCWNoYXIgdGVtcFsxNF07Cglmb3IgKGsgPSAxMDsgayA+PSAwOyBrIC0tKSB7CgkJZ2FwID0gZ2Fwc1trXTsKCQlmb3IgKGkgPSBnYXA7IGkgPCBuOyBpKyspIHsKCQkJc3RyY3B5KHRlbXAsc1swXVtpXSk7CgkJCWZvciAoaiA9IGk7IGogPj0gZ2FwICYmIHN0cmNtcChzWzBdW2otZ2FwXSwgdGVtcCkgPiAwOyBqIC09IGdhcCkKCQkJCXN0cmNweShzWzBdW2pdLCBzWzBdW2otZ2FwXSk7CgkJCXN0cmNweShzWzBdW2pdLCB0ZW1wKTsKCQl9Cgl9CgkKCXJldHVybjsKfQp2b2lkIHNoZWxsc29ydDIoY2hhciBzWzEwMDAxXVsxNF0sIGludCBuKSB7Cgl1bnNpZ25lZCBpbnQgZ2Fwc1tdID0gezEsIDUsIDE5LCA0MSwgMTA5LCAyMDksIDUwNSwgOTI5LCAyMTYxLCAzOTA1LCA4OTI5fTsKCQoJaW50IGksIGosIGs7CglpbnQgZ2FwOwoJY2hhciB0ZW1wWzE0XTsKCWZvciAoayA9IDEwOyBrID49IDA7IGsgLS0pIHsKCQlnYXAgPSBnYXBzW2tdOwoJCWZvciAoaSA9IGdhcDsgaSA8IG47IGkrKykgewoJCQlzdHJjcHkodGVtcCxzW2ldKTsKCQkJZm9yIChqID0gaTsgaiA+PSBnYXAgJiYgc3RyY21wKHNbai1nYXBdLCB0ZW1wKSA+IDA7IGogLT0gZ2FwKQoJCQkJc3RyY3B5KHNbal0sIHNbai1nYXBdKTsKCQkJc3RyY3B5KHNbal0sIHRlbXApOwoJCX0KCX0KCQoJcmV0dXJuOwp9CmludCBiaW5zZWFyY2goY2hhciBzW11bMTAwMDFdWzE0XSwgY2hhciB4W10sIGludCBsb3csIGludCBoaWdoKSB7CglpbnQgbWlkOwoJd2hpbGUgKGxvdyA8PSBoaWdoKSB7CgkJbWlkID0gKGxvdytoaWdoKSAvIDI7CgkJaWYgKHN0cmNtcCh4LCBzWzBdW21pZF0pIDwgMCkKCQkJaGlnaCA9IG1pZCAtIDE7CgkJZWxzZSBpZiAoc3RyY21wKHgsIHNbMF1bbWlkXSkgPiAwKQoJCQlsb3cgPSBtaWQgKyAxOwoJCWVsc2UgCgkJCXJldHVybiBtaWQ7Cgl9Cn0KaW50IGJpbnNlYXJjaDIoY2hhciBzWzEwMDAxXVsxNF0sIGNoYXIgeFtdLCBpbnQgbG93LCBpbnQgaGlnaCkgewoJaW50IG1pZDsKCXdoaWxlIChsb3cgPD0gaGlnaCkgewoJCW1pZCA9IChsb3craGlnaCkgLyAyOwoJCWlmIChzdHJjbXAoeCwgc1ttaWRdKSA8IDApCgkJCWhpZ2ggPSBtaWQgLSAxOwoJCWVsc2UgaWYgKHN0cmNtcCh4LCBzW21pZF0pID4gMCkKCQkJbG93ID0gbWlkICsgMTsKCQllbHNlIAoJCQlyZXR1cm4gbWlkOwoJfQp9CmNoYXIgYVsyXVsxMDAwMV1bMTRdOwpjaGFyIGJbMTAwMDFdWzE0XTsKaW50IHYxWzEwMDAxXSwgdjJbMTAwMDFdOwptYWluKCkKewoJaW50IG4sIG07CglpbnQgYywgaSwgaiwgaywgbDsKCWNoYXIgdGVtcFsxNF07CglpbnQgbWF4Y2hlZiA9IDAsIG1heGNvdW50cnkgPSAwOwoJY2hhciBDSEVGWzE0XSwgQ09VTlRSWVsxNF07CglzY2FuKCZuKTsKCXNjYW4oJm0pOwoJaiA9IDA7Cgl3aGlsZSAobi0tKSB7CgkJaSA9IDA7CgkJd2hpbGUgKChjID0gZ2V0Y2hhcigpKSAhPSAnICcpCgkJCWFbMF1bal1baSsrXSA9IGM7CgkJYVswXVtqXVtpXSA9ICdcMCc7CgkJaSA9IDA7CgkJd2hpbGUgKChjID0gZ2V0Y2hhcigpKSAhPSAnXG4nKQoJCQlhWzFdW2pdW2krK10gPSBjOwoJCWFbMV1bal1baV0gPSAnXDAnOwoJCXN0cmNweShiW2pdLCBhWzFdW2pdKTsKCQlqKys7Cgl9CglzaGVsbHNvcnQoYSwgaik7CglzaGVsbHNvcnQyKGIsIGopOwoJd2hpbGUgKG0tLSkgewoJCWkgPSAwOwoJCXdoaWxlICgoYyA9IGdldGNoYXIoKSkgIT0gJ1xuJyAmJiBjICE9IEVPRikKCQkJdGVtcFtpKytdID0gYzsKCQl0ZW1wW2ldID0gJ1wwJzsKCQlrID0gYmluc2VhcmNoKGEsIHRlbXAsIDAsIGotMSk7CgkJdjFba10rKzsKCQlsID0gYmluc2VhcmNoMihiLCBhWzFdW2tdLCAwLCBqLTEpOwoJCXYyW2xdKys7Cgl9CgltYXhjaGVmID0gdjFbMF07CglzdHJjcHkoQ0hFRiwgYVswXVswXSk7CgltYXhjb3VudHJ5ID0gdjJbMF07CglzdHJjcHkoQ09VTlRSWSwgYlswXSk7Cglmb3IgKGkgPSAxOyBpIDwgajsgaSsrKSB7CgkJaWYgKG1heGNoZWYgPT0gdjFbaV0pIHsKCQkJaWYgKHN0cmNtcChhWzBdW2ldLCBDSEVGKSA8IDApIHsKCQkJCXN0cmNweShDSEVGLCBhWzBdW2ldKTsKCQkJfQoJCX0KCQllbHNlIGlmIChtYXhjaGVmIDwgdjFbaV0pIHsKCQkJc3RyY3B5KENIRUYsIGFbMF1baV0pOwoJCQltYXhjaGVmID0gdjFbaV07CgkJfQoJCWlmIChtYXhjb3VudHJ5ID09IHYyW2ldKSB7CgkJCWlmIChzdHJjbXAoYltpXSwgQ09VTlRSWSkgPCAwKSB7CgkJCQlzdHJjcHkoQ09VTlRSWSwgYltpXSk7CgkJCX0KCQl9CgkJZWxzZSBpZiAobWF4Y291bnRyeSA8IHYyW2ldKSB7CgkJCXN0cmNweShDT1VOVFJZLCBiW2ldKTsKCQkJbWF4Y291bnRyeSA9IHYyW2ldOwoJCX0KCX0KCXByaW50ZigiJXNcbiVzXG4iLCBDT1VOVFJZLCBDSEVGKTsKCXJldHVybiAwOwp9