#include <bits/stdc++.h>
using namespace std;
int Scan();
int n, m, w, num;
double aver, cur[105];
vector<pair<int, double> > res[105];
double place(double V, int i) {
  double D = aver - cur[num];
  double L = min(D, V);
  res[num].push_back(make_pair(i, L));
  cur[num] += L;
  if (fabs(cur[num] - aver) <= 1e-6) num++;
  return fabs(V - L);
}
int main() {
  scanf("%d%d%d", &n, &w, &m);
  aver = (double)w * n / m;
  num = 1;
  memset(cur, 0, sizeof cur);
  for (int i = 1; i <= n; ++i) {
    double now = place(w, i);
    if (now > 1e-6) now = place(now, i);
  }
  if (num != m + 1)
    puts("NO");
  else {
    puts("YES");
    for (int i = 1; i <= m; ++i) {
      for (int j = 0; j < res[i].size(); ++j) {
        printf("%d %.6lf", res[i][j].first, res[i][j].second);
        j == res[i].size() - 1 ? puts("") : putchar(' ');
      }
    }
  }
}
int Scan() {
  int res = 0, ch, flag = 0;
  if ((ch = getchar()) == '-')
    flag = 1;
  else if (ch >= '0' && ch <= '9')
    res = ch - '0';
  while ((ch = getchar()) >= '0' && ch <= '9') res = res * 10 + ch - '0';
  return flag ? -res : res;
}
