#include <bits/stdc++.h>
using namespace std;
map<long long, pair<long long, long long> > mp;
map<pair<long long, long long>, long long> a;
pair<long long, long long> g[1 << 16], ans[16];
long long pre[1 << 16], k, i, j, s, sum, S[16], n[16], fr[16];
pair<long long, long long> nex(pair<long long, long long> P) {
  long long t = sum - (S[P.first] - a[P]);
  return mp.count(t) ? mp[t] : pair<long long, long long>{-1, 0};
}
void dfs(pair<long long, long long> P, bool fl, long long to) {
  if (P == pair<long long, long long>{-1, 0}) {
    s = -1;
    return;
  }
  long long x = P.first;
  ans[x] = P;
  if (a[P] == to || s == -1) return;
  if (s >> x & 1) s = -1;
  s |= 1 << x, dfs(nex(P), fl, to);
}
void Dfs(long long t) {
  if (pre[t] == t) {
    s = 0, dfs(nex(g[t]), 1, a[g[t]]);
    return;
  }
  Dfs(pre[t]), Dfs(t ^ pre[t]);
}
signed main() {
  scanf("%lld", &k);
  for (long long i = (0); i <= (k - 1); i++) {
    scanf("%lld", &n[i]);
    for (long long j = (1); j <= (n[i]); j++)
      scanf("%lld", &a[{i, j}]), mp[a[{i, j}]] = {i, j}, S[i] += a[{i, j}];
    sum += S[i];
  }
  if (sum % k != 0) return puts("No"), 0;
  sum /= k;
  for (long long i = (0); i <= (k - 1); i++)
    for (long long j = (1); j <= (n[i]); j++) {
      s = 1 << i, dfs(nex({i, j}), 0, a[{i, j}]);
      if (s != -1) pre[s] = s, g[s] = {i, j};
    }
  pre[0] = 1;
  for (long long i = (1); i <= ((1 << k) - 1); i++)
    for (j = i; j; j = (j - 1) & i)
      if (pre[j] && pre[i ^ j]) pre[i] = j;
  if (!pre[(1 << k) - 1])
    puts("No");
  else {
    puts("Yes");
    Dfs((1 << k) - 1);
    for (long long i = (0); i <= (k - 1); i++) fr[nex(ans[i]).first] = i;
    for (long long i = (0); i <= (k - 1); i++)
      printf("%lld %lld\n", a[ans[i]], fr[i] + 1);
  }
}
