#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void checkmin(T &a, T b) {
  if (b < a) a = b;
}
template <class T>
inline void checkmax(T &a, T b) {
  if (b > a) a = b;
}
int cond = (long long)1;
void _main() {
  int n, w, m;
  scanf("%d%d%d", &n, &w, &m);
  int guests = m;
  int usedbottles = 0;
  int botid = 1;
  int fuel = m;
  int used = 0;
  bool ok = 1;
  vector<vector<pair<int, int> > > sol;
  for (int i = (0); i < (m); ++i) {
    int needfuel = n;
    vector<pair<int, int> > result;
    while (needfuel > 0) {
      if (fuel > 0) {
        int use = min(fuel, needfuel);
        result.push_back(pair<int, int>(botid, use));
        fuel -= use;
        needfuel -= use;
        ++used;
        if (used > 2) ok = 0;
        if (fuel == 0) {
          botid++;
          fuel = m;
          used = 0;
        }
      } else
        assert(0);
    }
    sol.push_back(result);
  }
  if (!ok) cout << "NO" << endl;
  cout.precision(6);
  if (ok) {
    cout << "YES" << endl;
    for (int i = (0); i < (m); ++i) {
      for (int j = (0); j < ((int)(sol[i]).size()); ++j) {
        if (j) cout << " ";
        long double myfuel = (long double)sol[i][j].second * w / m;
        cout << fixed << sol[i][j].first << " " << myfuel;
      }
      cout << endl;
    }
  }
}
int main(int argc, char **argv) {
  string p = "../gcj/source/" + string("") + argv[0][strlen(argv[0]) - 1];
  for (int i = (0); i < (argc); ++i)
    if (strcmp(argv[i], "1n") == 0) {
      freopen("1.in", "r", stdin);
    }
  for (int i = (0); i < (argc); ++i)
    if (strcmp(argv[i], "2n") == 0) {
      freopen("2.in", "r", stdin);
    }
  for (int i = (0); i < (argc); ++i)
    if (strcmp(argv[i], "3n") == 0) {
      freopen("3.in", "r", stdin);
    }
  for (int i = (0); i < (argc); ++i)
    if (strcmp(argv[i], "4n") == 0) {
      freopen("4.in", "r", stdin);
    }
  for (int i = (0); i < (argc); ++i)
    if (strcmp(argv[i], "5n") == 0) {
      freopen("5.in", "r", stdin);
    }
  for (int i = (0); i < (argc); ++i)
    if (strcmp(argv[i], "s0") == 0) {
      freopen((p + "-small-0.in").c_str(), "r", stdin);
      freopen((p + "-small-0.out").c_str(), "w", stdout);
    }
  for (int i = (0); i < (argc); ++i)
    if (strcmp(argv[i], "s1") == 0) {
      freopen((p + "-small-1.in").c_str(), "r", stdin);
      freopen((p + "-small-1.out").c_str(), "w", stdout);
    }
  for (int i = (0); i < (argc); ++i)
    if (strcmp(argv[i], "s2") == 0) {
      freopen((p + "-small-2.in").c_str(), "r", stdin);
      freopen((p + "-small-2.out").c_str(), "w", stdout);
    }
  for (int i = (0); i < (argc); ++i)
    if (strcmp(argv[i], "l0") == 0) {
      freopen((p + "-large-0.in").c_str(), "r", stdin);
      freopen((p + "-large-0.out").c_str(), "w", stdout);
    }
  for (int i = (0); i < (argc); ++i)
    if (strcmp(argv[i], "q") == 0) cond = 1 << 30;
  _main();
  return 0;
}
