#include <bits/stdc++.h>
using namespace std;
int n, w, m, curr_no, min_curr_no;
double curr_cup, cup_amt, to_take;
map<int, double> v[55];
bool flag;
int main() {
  cin >> n >> w >> m;
  curr_cup = w;
  curr_no = 0;
  min_curr_no = 0;
  flag = false;
  for (int i = 0; i < m; i++) {
    v[i].clear();
    cup_amt = ((double)n * w) / m;
    while (cup_amt > (1e-10)) {
      if (curr_cup < (1e-10)) {
        curr_cup = w, curr_no++;
        min_curr_no = i;
      }
      to_take = min(curr_cup, cup_amt);
      curr_cup -= to_take;
      cup_amt -= to_take;
      v[i][curr_no] += to_take;
      if (min_curr_no < i - 1) flag = true;
    }
  }
  if (flag)
    printf("NO\n");
  else {
    printf("YES\n");
    for (int i = 0; i < m; i++) {
      for (map<int, double>::iterator q = v[i].begin(); q != v[i].end(); q++)
        printf("%d %.6lf ", 1 + q->first, q->second);
      printf("\n");
    }
  }
}
