#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
const int MOD = 1000000007;
vector<pair<pair<int, int>, int>> v;
int n;
int a, b, c;
map<string, int> id;
map<int, string> names;
bool ok[50][50];
void read() {
  cin >> n;
  for (int i = 0, cont = 1; i < n; i++) {
    string a1, b1, c1;
    cin >> a1 >> b1 >> c1;
    if (id.find(a1) == id.end()) {
      id[a1] = cont;
      names[cont] = a1;
      cont++;
    }
    if (id.find(c1) == id.end()) {
      id[c1] = cont;
      names[cont] = c1;
      cont++;
    }
    ok[id[a1]][id[c1]] = true;
  }
  cin >> a >> b >> c;
}
void solve() {
  int mind = 2000000000;
  for (int i = 1; i <= 7; i++)
    for (int j = 1; j <= 7; j++)
      for (int k = 1; k <= 7; k++) {
        if (i + j + k == 7) {
          int m[3];
          m[0] = a / i;
          m[1] = b / j;
          m[2] = c / k;
          sort(m, m + 3);
          if (m[2] - m[0] < mind) {
            v.clear();
            v.push_back(make_pair(make_pair(i, j), k));
            mind = m[2] - m[0];
          } else if (m[2] - m[0] == mind) {
            v.push_back(make_pair(make_pair(i, j), k));
          }
        }
      }
  int mas[7];
  for (int i = 0; i < 7; i++) mas[i] = i + 1;
  int otgt = -1;
  do {
    for (int i = 0; i < v.size(); i++) {
      int otg = 0;
      int e = v[i].first.first, d = v[i].first.second, t = v[i].second;
      for (int i = 0; i < e; i++)
        for (int j = 0; j < e; j++) {
          if (ok[mas[i]][mas[j]]) otg++;
        }
      for (int i = e; i < e + d; i++)
        for (int j = e; j < e + d; j++) {
          if (ok[mas[i]][mas[j]]) otg++;
        }
      for (int i = e + d; i < e + d + t; i++)
        for (int j = e + d; j < e + d + t; j++) {
          if (ok[mas[i]][mas[j]]) otg++;
        }
      if (otg > otgt) otgt = otg;
    }
  } while (next_permutation(mas, mas + 7));
  cout << mind << " " << otgt << '\n';
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  read();
  solve();
  return 0;
}
