#include <bits/stdc++.h>
using namespace std;
int d[] = {25, 18, 15, 12, 10, 8, 6, 4, 2, 1};
int t, n, k;
struct edge {
  string name;
  int s, win[50];
} a[100];
bool cmp1(edge x, edge y) {
  if (x.s != y.s) {
    return x.s > y.s;
  }
  for (int i = 0; i < 50; i++) {
    if (x.win[i] != y.win[i]) {
      return x.win[i] > y.win[i];
    }
  }
  return false;
}
bool cmp2(edge x, edge y) {
  if (x.win[0] != y.win[0]) {
    return x.win[0] > y.win[0];
  } else {
    return cmp1(x, y);
  }
}
int main() {
  cin >> t;
  while (t--) {
    cin >> n;
    string name;
    for (int i = 0; i < n; i++) {
      cin >> name;
      bool flag = false;
      for (int j = 0; j < k; j++) {
        if (a[j].name == name) {
          if (i < 10) {
            a[j].s += d[i];
          }
          a[j].win[i]++;
          flag = true;
          break;
        }
      }
      if (flag == false) {
        a[k].name = name;
        if (i < 10) {
          a[k].s = d[i];
        }
        a[k].win[i]++;
        k++;
      }
    }
  }
  sort(a, a + k, cmp1);
  cout << a[0].name << endl;
  sort(a, a + k, cmp2);
  cout << a[0].name;
  return 0;
}
