#include <bits/stdc++.h>
using namespace std;
void ga(int N, int *A) {
  for (int i(0); i < N; i++) scanf("%d", A + i);
}
int N, F[6][6], T[6][6], A[6][6], a, b, c, d, e, C[6];
map<vector<int>, int> dp;
bool cmp(pair<int, int> a, pair<int, int> b) {
  return a.first ^ b.first ? a.first < b.first : a.second > b.second;
}
int dyn(int *, int);
int rec(int u, int S, int I, int *R, int *C) {
  if (I == N) return S ? -int(1e9 + 1) : dyn(R, u + 1);
  int h = -int(1e9 + 1);
  for (int k(F[u][I]); k < min(S, T[u][I]) + 1; k++)
    R[I] = k + C[I],
    h = max(h, rec(u, S - k, I + 1, R, C) + A[u][I] * !!k + k * k);
  return h;
}
int dyn(int *C, int u) {
  if (u == N - 1) return 0;
  vector<int> g;
  for (int k(u); k < N; k++) g.push_back(C[k]);
  if (dp.count(g)) return dp[g];
  int R[6] = {};
  return dp[g] = rec(u, C[u], u + 1, R, C);
}
int main(void) {
  scanf("%d", &N);
  for (int i(0); i < N * (N - 1) / 2; i++)
    scanf("%d%d", &a, &b), --a, --b,
        scanf("%d%d%d", F[a] + b, T[a] + b, A[a] + b);
  for (int i(0); i < 40; i++) {
    *C = i, dp.clear();
    if (dyn(C, 0) >= 0) return printf("%d %d\n", i, dyn(C, 0)), 0;
  }
  puts("-1 -1");
  return 0;
}
