#include <bits/stdc++.h>
const int MaxN = 100;
using namespace std;
int a[MaxN + 5], r[MaxN + 5], res[MaxN + 5];
int ta[MaxN + 5], tr[MaxN + 5];
int n, w, m;
int main() {
  while (~scanf("%d%d%d", &n, &w, &m)) {
    memset(res, 0, sizeof(res));
    for (int i = 1; i <= n; i++) a[i] = ta[i] = m;
    for (int i = 1; i <= m; i++) r[i] = tr[i] = n;
    int tot = 1;
    bool ok = 1;
    for (int i = 1; i <= m; i++) {
      while (r[i] != 0) {
        if (a[tot] >= r[i]) {
          a[tot] -= r[i];
          r[i] = 0;
          res[tot]++;
          if (a[tot] == 0) tot++;
        } else {
          res[tot]++;
          r[i] -= a[tot];
          a[tot] = 0;
          tot++;
        }
      }
    }
    for (int i = 1; i <= n; i++)
      if (res[i] > 2) ok = 0;
    if (a[tot] != 0 || r[m] != 0 || ok == 0)
      printf("NO\n");
    else {
      tot = 1;
      printf("YES\n");
      for (int i = 1; i <= m; i++) {
        while (tr[i] != 0) {
          if (ta[tot] >= tr[i]) {
            ta[tot] -= tr[i];
            printf("%d %.6lf ", tot, 1.0 * tr[i] * w / m);
            tr[i] = 0;
            if (ta[tot] == 0) tot++;
          } else {
            tr[i] -= ta[tot];
            printf("%d %.6lf ", tot, 1.0 * ta[tot] * w / m);
            ta[tot] = 0;
            tot++;
          }
        }
        printf("\n");
      }
    }
  }
}
