#include <bits/stdc++.h>
using namespace std;
struct PPL {
  int btl[55];
  double frc[55];
};
struct MILK {
  double rmn;
  int cnt;
};
PPL ppl[55];
MILK milk[55];
void init(int n, int w) {
  for (int i = 1; i <= n; ++i) milk[i].cnt = 0, milk[i].rmn = (double)w;
}
int main() {
  int n, w, m;
  while (~scanf("%d%d%d", &n, &w, &m)) {
    memset(ppl, 0, sizeof(ppl));
    init(n, w);
    double avr = 1.0 * n * w / m;
    double tmp;
    int id;
    for (int i = 0; i < m; ++i) {
      id = 0;
      tmp = avr;
      for (int j = 1; j <= n && fabs(tmp) > 1e-6; ++j) {
        if (fabs(milk[j].rmn) > 1e-6) {
          if (milk[j].rmn > tmp) {
            milk[j].rmn -= tmp;
            milk[j].cnt++;
            ppl[i].btl[id] = j;
            ppl[i].frc[id] = tmp;
            tmp = 0;
            id++;
          } else {
            tmp -= milk[j].rmn;
            milk[j].cnt++;
            ppl[i].btl[id] = j;
            ppl[i].frc[id] = milk[j].rmn;
            milk[j].rmn = 0;
            id++;
          }
        }
      }
    }
    int flag = 1;
    for (int i = 1; i <= n; ++i)
      if (milk[i].cnt > 2) {
        flag = 0;
        break;
      }
    if (flag == 0)
      puts("NO");
    else {
      puts("YES");
      for (int i = 0; i < m; ++i) {
        id = 0;
        while (ppl[i].btl[id] != 0) {
          printf("%d %.6f", ppl[i].btl[id], ppl[i].frc[id]);
          id++;
          printf("%c", ppl[i].btl[id] == 0 ? '\n' : ' ');
        }
      }
    }
  }
  return 0;
}
