#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, w, m;
  cin >> n >> w >> m;
  double distQuan = (double)n * w / m;
  double left = 0;
  vector<int> bottles;
  for (int i = 0; i < n; i++) {
    bottles.push_back(w);
  }
  int idx = 0;
  bool f = false;
  vector<pair<int, double> > distList[51];
  for (int i = 0; i < m; i++) {
    double sum = left;
    if (!(abs((sum) - (distQuan)) < (1e-10)) && left > distQuan) {
      cout << "NO" << endl;
      f = true;
      break;
    }
    if (!(abs((left) - (0.0)) < (1e-10))) {
      distList[i].push_back(make_pair(idx - 1, left));
    }
    if ((abs((sum) - (distQuan)) < (1e-10))) {
      left = 0;
      continue;
    }
    while (1) {
      double overQuan = sum + bottles[idx] - distQuan;
      sum = min(distQuan, sum + bottles[idx]);
      if (!(abs((sum) - (distQuan)) < (1e-10)) && sum < distQuan) {
        distList[i].push_back(make_pair(idx, bottles[idx]));
        idx++;
        continue;
      } else {
        distList[i].push_back(make_pair(idx, bottles[idx] - overQuan));
        idx++;
        left = overQuan;
        break;
      }
    }
  }
  if (!f) {
    cout << "YES" << endl;
    for (int i = 0; i < m; i++) {
      for (int j = 0; j < distList[i].size(); j++) {
        printf("%d %.6f", distList[i][j].first + 1, distList[i][j].second);
        if (j != distList[i].size() - 1) {
          cout << " ";
        } else
          cout << endl;
      }
    }
  }
  return 0;
}
