#include <bits/stdc++.h>
using namespace std;
const int maxn = 6000;
vector<long long> g[20];
map<long long, pair<int, int> > ma;
long long sum[20], a[1 << 20], dp[1 << 20], pre[1 << 20];
pair<int, int> pr[20][maxn], ans[20];
vector<pair<int, int> > w[1 << 20];
int main() {
  int n, k, i, j;
  long long x, y, z;
  scanf("%d", &k);
  long long s = 0;
  for (i = 1; i <= k; i++) {
    scanf("%d", &n);
    for (j = 0; j < n; j++) {
      scanf("%I64d", &x);
      s += x;
      g[i].push_back(x);
      ma[x] = pair<int, int>(i, j);
      sum[i] += x;
    }
  }
  if (s % k) printf("No\n"), exit(0);
  x = s / k;
  for (i = 1; i <= k; i++)
    for (j = 0; j < g[i].size(); j++) {
      y = x - (sum[i] - g[i][j]);
      pr[i][j] = ma.count(y) ? pair<int, int>(ma[y].first, ma[y].second)
                             : pair<int, int>(-1, -1);
    }
  for (i = 1; i <= k; i++) {
    for (j = 0; j < g[i].size(); j++) {
      pair<int, int> p = pair<int, int>(i, j);
      set<int> se;
      vector<pair<int, int> > res;
      int ma = 0;
      while (1) {
        res.push_back(p);
        se.insert(p.first);
        ma |= 1 << (p.first - 1);
        p = pr[p.first][p.second];
        if (p == pair<int, int>(-1, -1)) break;
        if (se.count(p.first)) {
          if (p != pair<int, int>(i, j)) p = pair<int, int>(-1, -1);
          break;
        }
      }
      if (p == pair<int, int>(-1, -1)) continue;
      a[ma] = 1;
      w[ma] = res;
    }
  }
  dp[0] = 1;
  int S = (1 << k) - 1;
  for (i = 1; i <= S; i++) {
    int ns = i;
    while (ns) {
      if (a[ns] && dp[i ^ ns]) {
        dp[i] = 1;
        pre[i] = ns;
        break;
      }
      ns = (ns - 1) & i;
    }
  }
  if (!dp[S]) printf("No\n"), exit(0);
  printf("Yes\n");
  while (S) {
    vector<pair<int, int> > v = w[pre[S]];
    for (i = 0; i < v.size(); i++) {
      int h = i != 0 ? v[i - 1].first : v.back().first;
      ans[v[i].first] = pair<int, int>(g[v[i].first][v[i].second], h);
    }
    S = S ^ pre[S];
  }
  for (i = 1; i <= k; i++) printf("%d %d\n", ans[i].first, ans[i].second);
  return 0;
}
