#include <bits/stdc++.h>
using namespace std;
double a[50];
double b[50];
struct node {
  int index;
  double val;
};
vector<node> ans[50];
int main() {
  double n, w, m, t;
  int i, j;
  while (cin >> n >> w >> m) {
    t = n * w / m;
    memset(b, 0, sizeof(b));
    for (i = 0; i < n; i++) {
      ans[i].clear();
      a[i] = w;
    }
    node ss;
    int p = 0;
    for (i = 0; i < n; i++) {
      if (fabs(b[p] - t) < 1e-10) p++;
      if (t - b[p] >= a[i]) {
        b[p] += a[i];
        ss.index = i + 1;
        ss.val = a[i];
        ans[p].push_back(ss);
      } else {
        a[i] = a[i] - (t - b[p]);
        ss.index = i + 1;
        ss.val = t - b[p];
        ans[p].push_back(ss);
        p++;
        if (a[i] > t + 1e-10)
          break;
        else {
          b[p] += a[i];
          ss.index = i + 1;
          ss.val = a[i];
          ans[p].push_back(ss);
        }
      }
    }
    if (i < n) {
      cout << "NO" << endl;
    } else {
      cout << "YES" << endl;
      for (i = 0; i < m; i++) {
        for (j = 0; j < ans[i].size(); j++) {
          printf("%d %.6lf", ans[i][j].index, ans[i][j].val);
          if (j == ans[i].size() - 1)
            cout << endl;
          else
            cout << " ";
        }
      }
    }
  }
}
