#include <bits/stdc++.h>
using namespace std;
namespace CF {
const int N = 20, M = 5005, MAXN = 1 << 15 | 5;
int n, C[N], A[N][M], Vis[N], F[MAXN], from[MAXN], mark[N];
map<int, pair<int, int> > Bel;
long long ave, S[N];
pair<int, int> start[MAXN], res[N];
inline int read() {
  int x = 0, f = 0, ch = getchar();
  while (!isdigit(ch)) f |= (ch == '-'), ch = getchar();
  while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
  return f ? -x : x;
}
bool dfs(const int i, const int j, int &sta, int startp) {
  if (Vis[i]) return i == startp && Vis[i] == j;
  sta |= (1 << (i - 1));
  Vis[i] = j;
  if (ave - (S[i] - A[i][j]) > 1e9) return false;
  int t = ave - (S[i] - A[i][j]);
  if (!Bel.count(t)) return false;
  pair<int, int> p = Bel[t];
  return dfs(p.first, p.second, sta, startp);
}
void dfs(const int i, const int j) {
  if (mark[i]) return;
  mark[i] = 1;
  int t = ave - (S[i] - A[i][j]);
  pair<int, int> p = Bel[t];
  res[p.first] = pair<int, int>(t, i);
  dfs(p.first, p.second);
}
void print(const int sta) {
  if (from[sta] == sta)
    dfs(start[sta].first, start[sta].second);
  else {
    print(from[sta]);
    print(sta ^ from[sta]);
  }
}
void work() {
  n = read();
  long long sum = 0;
  for (int i = 1; i <= n; i++) {
    C[i] = read();
    for (int j = 1; j <= C[i]; j++) {
      A[i][j] = read();
      Bel[A[i][j]] = pair<int, int>(i, j);
      S[i] += A[i][j];
    }
    sum += S[i];
  }
  ave = sum / n;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= C[i]; j++) {
      int t = 0;
      memset(Vis, 0, sizeof(int[n + 1]));
      if (dfs(i, j, t, i)) {
        start[t] = pair<int, int>(i, j);
        F[t] = 1;
        from[t] = t;
      }
    }
  int all = (1 << n) - 1;
  for (int s = 1; s <= all; s++)
    if (F[s])
      for (int t = all ^ s, sub = t; sub; sub = t & (sub - 1))
        if (F[sub]) {
          F[s | sub] = 1;
          from[s | sub] = s;
        }
  if (F[all]) {
    puts("Yes");
    print(all);
    for (int i = 1; i <= n; i++) printf("%d %d\n", res[i].first, res[i].second);
  } else
    puts("No");
}
}  // namespace CF
int main() {
  CF::work();
  return 0;
}
