#include <bits/stdc++.h>
using namespace std;
const int MAXN = 256;
const double EPS = 1e-9;
struct dot {
  int who;
  double much;
};
int n, w, m;
vector<dot> ans[MAXN];
double queda[MAXN], tiene[MAXN];
void solve() {
  int p = 0, q = 0;
  while (p < m) {
    double d = min(tiene[q], queda[p]);
    tiene[q] -= d;
    queda[p] -= d;
    ans[p].push_back({q, d});
    if (queda[p] < EPS) {
      p++;
    }
    if (tiene[q] < EPS) {
      q++;
    }
  }
}
int main() {
  while (scanf("%d %d %d", &n, &w, &m) == 3) {
    for (int i = (0); i < (int)(m); i++) {
      queda[i] = (double)n * w / m;
      ans[i].clear();
    }
    for (int i = (0); i < (int)(n); i++) {
      tiene[i] = (double)w;
    }
    if (m <= n) {
      solve();
    } else if (m < 2 * n) {
      int div = m - n;
      if (n % div) {
        puts("NO");
        continue;
      }
      solve();
    } else if (m == 2 * n) {
      solve();
    } else {
      puts("NO");
      continue;
    }
    puts("YES");
    for (int i = (0); i < (int)(m); i++) {
      for (int j = (0); j < (int)(ans[i].size()); j++) {
        dot item = ans[i][j];
        printf("%d %.10f ", item.who + 1, item.much);
      }
      puts("");
    }
  }
  return 0;
}
