#include <bits/stdc++.h>
using namespace std;
long long int sum1[16], k, need, sum[16], tot;
map<long long int, int> mp;
vector<long long int> arr[16];
long long int n[16], mask;
vector<long long int> p, q;
bool dp[(1 << 15) + 7];
void print() {
  cout << "Yes\n";
  for (int j = 0; j < k; j++) cout << p[j] << " " << q[j] + 1 << "\n";
  exit(0);
}
bool chk(int id, long long int val) {
  mask |= (1 << id);
  long long int req, tid = id, tval = val;
  int x;
  p[id] = val;
  while (1) {
    req = need - sum[tid] + tval;
    if (req == val) {
      q[id] = tid;
      return 1;
    }
    if (!mp.count(req)) return 0;
    x = mp[req];
    if (mask & (1 << x)) return 0;
    p[x] = req;
    q[x] = tid;
    tid = x;
    tval = req;
    mask |= (1 << tid);
  }
}
void call(int u) {
  if (u == k) {
    print();
    exit(0);
  }
  if (dp[mask]) return;
  if (mask & (1 << u)) {
    call(u + 1);
  } else {
    long long int tmask = mask;
    vector<long long int> tp = p, tq = q;
    for (int i = 0; i < n[u]; i++) {
      if (chk(u, arr[u][i])) call(u + 1);
      p = tp;
      q = tq;
      mask = tmask;
    }
    dp[mask] = 1;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int x, u;
  cin >> k;
  for (int i = 0; i < k; i++) {
    cin >> n[i];
    for (int j = 0; j < n[i]; j++) {
      cin >> x;
      sum[i] += x;
      arr[i].push_back(x);
      mp[x] = i;
    }
    tot += sum[i];
  }
  if (tot % k) {
    cout << "No\n";
    return 0;
  }
  need = tot / k;
  p.resize(k);
  q.resize(k);
  call(0);
  cout << "No\n";
  return 0;
}
