#include <bits/stdc++.h>
const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, -1, 0, 1};
using namespace std;
int n, m, w;
class Point {
 public:
  int x;
  int y;
};
int work() {
  scanf("%d%d%d", &n, &w, &m);
  int v[101];
  memset(v, 0, sizeof(v));
  int sum = n * m;
  int flag = 0;
  while (sum > 0) {
    if (sum % m != 0)
      if (v[sum / m]) {
        flag = 1;
        break;
      } else
        v[sum / m] = 1;
    sum -= n;
  }
  if (flag) {
    printf("NO\n");
    return 0;
  }
  printf("YES\n");
  int num = 0;
  int reset = 0;
  for (int i = 0; i < m; ++i) {
    sum = reset;
    if (sum > (0 + 10e-6)) printf("%d %.6f", num, 1.0 * reset / m * w);
    if (sum > (0 + 10e-6))
      if (sum == n) {
        printf("\n");
      } else
        printf(" ");
    reset = 0;
    while (sum < n) {
      if (sum + m < n) {
        num++;
        printf("%d %.6f ", num, 1.0 * w);
        sum += m;
        reset = 0;
      } else {
        num++;
        printf("%d %.6f\n", num, 1.0 * (n - sum) / m * w);
        reset = m - (n - sum);
        sum = n;
      }
    }
  }
  return 0;
}
int main() {
  work();
  return 0;
}
