#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:264777216")
void Solve() {
  int n, w, m;
  cin >> n >> w >> m;
  vector<int> v(n, w * m);
  vector<int> res(m, 0);
  int index = 0;
  bool is = true;
  set<int> dp[1000];
  vector<pair<int, int> > r[100];
  for (int i = 0; i < m; ++i) {
    while (res[i] != w * n) {
      while (index < n && v[index] == 0) ++index;
      if (index >= n) {
        is = false;
        break;
      }
      dp[index].insert(i);
      int end = min(w * n - res[i], v[index]);
      res[i] += end;
      v[index] -= end;
      r[i].push_back(pair<int, int>(index + 1, end));
    }
    if (is == false) break;
  }
  for (int i = 0; i < n; ++i)
    if (dp[i].size() > 2) {
      is = false;
    }
  if (index == n - 1 && v[index] != 0) {
    is = false;
  }
  if (index < n - 1) is = false;
  if (!is) {
    cout << "NO";
  } else {
    cout << "YES" << endl;
    for (int i = 0; i < m; ++i) {
      for (int j = 0; j < r[i].size(); ++j) {
        printf("%d %.9lf ", r[i][j].first, (double)r[i][j].second / m);
      }
      cout << endl;
    }
  }
}
int main() {
  Solve();
  return 0;
}
