#include <bits/stdc++.h>
using namespace std;
const int MAXN = 51;
const double EPS = 1e-6;
int n, w, m;
double ave;
int t[MAXN];
double las[MAXN];
vector<pair<int, double> > ans[MAXN];
int main() {
  cin >> n >> w >> m;
  ave = n * w / double(m);
  memset(t, 0, sizeof(t));
  for (int i = 1; i <= m; i++) las[i] = ave;
  int j = 1;
  for (int i = 1; i <= n; i++) {
    double now = w;
    while (now > EPS) {
      if (now >= las[j]) {
        t[i]++;
        now -= las[j];
        las[j] = 0;
        j++;
      } else {
        t[i]++;
        las[j] -= now;
        if (las[j] < EPS) j++;
        now = 0;
      }
    }
  }
  for (int i = 1; i <= n; i++)
    if (t[i] > 2) {
      printf("NO\n");
      return 0;
    }
  for (int i = 1; i <= m; i++) las[i] = ave;
  j = 1;
  for (int i = 1; i <= n; i++) {
    double now = w;
    while (now > EPS) {
      if (now >= las[j]) {
        now -= las[j];
        ans[j].push_back(make_pair(i, las[j]));
        las[j] = 0;
        j++;
      } else {
        las[j] -= now;
        ans[j].push_back(make_pair(i, now));
        if (las[j] < EPS) j++;
        now = 0;
      }
    }
  }
  printf("YES\n");
  for (int i = 1; i <= m; i++) {
    for (int j = 0; j < ans[i].size(); j++)
      printf("%d %.6lf ", ans[i][j].first, ans[i][j].second);
    printf("\n");
  }
  return 0;
}
