#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
const int INF = 1e9 + 10;
const long long BINF = 1e18 + 10;
const long double eps = 1e-6;
void source() {
  int n, w, m;
  cin >> n >> w >> m;
  long double need = (long double)n * (long double)w / (long double)m;
  int cur = 1, in = 0;
  long double ost = w;
  vector<vector<pair<int, long double>>> ans(m + 1);
  for (int i = 1; i <= m; i++) {
    long double can = need;
    while (can - ost > -eps) {
      if (ost > eps) ans[i].push_back({cur, ost});
      can -= ost;
      ost = w;
      cur++;
      in = 0;
    }
    if (can > eps) {
      ans[i].push_back({cur, can});
      ost -= can;
      in++;
      if (in == 2) {
        cout << "NO";
        exit(0);
      }
    }
  }
  cout << "YES\n";
  for (int i = 1; i <= m; i++) {
    for (auto it : ans[i]) {
      cout << it.first << ' ';
      cout << fixed << setprecision(10) << it.second << ' ';
    }
    cout << '\n';
  }
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  source();
  return 0;
}
