#include <bits/stdc++.h>
using namespace std;
struct node {
  int a;
  double v;
  node() {}
  node(int a, double v) : a(a), v(v) {}
};
vector<vector<node> > v;
double w[100];
int main() {
  int n, m, i, j;
  double d, s, t;
  bool flag;
  while (scanf("%d%lf%d", &n, &d, &m) != EOF) {
    v.clear();
    flag = true;
    for (i = 1; i <= n; i++) w[i] = d;
    s = n * d / m;
    i = 1;
    while (m--) {
      if (!(fabs(w[i] - d) < 1e-8) && w[i] > s + 1e-8) {
        flag = false;
        break;
      }
      vector<node> vv;
      t = 0;
      while ((t + w[i]) < s - 1e-8) {
        vv.push_back(node(i, w[i]));
        t += w[i++];
      }
      vv.push_back(node(i, s - t));
      v.push_back(vv);
      w[i] -= s - t;
      if ((fabs(w[i]) < 1e-8)) i++;
    }
    if (flag) {
      printf("YES\n");
      for (i = 0; i < v.size(); i++) {
        printf("%d %.7f", v[i][0].a, v[i][0].v);
        for (j = 1; j < v[i].size(); j++)
          printf(" %d %.7f", v[i][j].a, v[i][j].v);
        printf("\n");
      }
    } else
      printf("NO\n");
  }
  return 0;
}
