#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
struct cup {
  int cont;
  int from[60];
  double vo[60];
} c[60];
struct data {
  double remain;
  int cont;
} d[60];
int main() {
  int n, m;
  double w;
  bool flag = true;
  scanf("%d%lf%d", &n, &w, &m);
  if (n == m) {
    printf("YES\n");
    for (int i = 1; i <= m; i++) {
      printf("%d %.6f\n", i, w);
    }
    return 0;
  }
  for (int i = 1; i <= n; i++) {
    d[i].remain = w;
    d[i].cont = 0;
  }
  for (int i = 1; i <= m; i++) c[i].cont = 0;
  double vol = 1.0 * n * w / m;
  for (int i = 1; i <= m; i++) {
    double temp = vol;
    for (int j = 1; j <= n; j++) {
      if (d[j].remain > eps) {
        double t = min(temp, d[j].remain);
        d[j].remain -= t;
        d[j].cont++;
        temp -= t;
        c[i].cont++;
        c[i].from[c[i].cont] = j;
        c[i].vo[c[i].cont] = t;
        if (temp <= eps) break;
      }
    }
  }
  for (int j = 1; j <= n; j++) {
    if (d[j].cont > 2) {
      flag = false;
      break;
    }
  }
  if (!flag) {
    printf("NO\n");
  } else {
    printf("YES\n");
    int i, j;
    for (i = 1; i <= m; i++) {
      for (j = 1; j < c[i].cont; j++) {
        printf("%d %.6lf ", c[i].from[j], c[i].vo[j]);
      }
      printf("%d %.6lf\n", c[i].from[j], c[i].vo[j]);
    }
  }
  return 0;
}
