#include <bits/stdc++.h>
using namespace std;
vector<pair<int, double> > a[100];
int main() {
  int n, m, k;
  scanf("%d%d%d", &n, &m, &k);
  double v = n * m;
  v /= k;
  if (n == k) {
    cout << "YES" << endl;
    for (int i = 0; i < k; i++)
      cout << i + 1 << " " << m << ".00000000" << endl;
    return 0;
  } else if (k < n) {
    int j = 0;
    double kj = m;
    for (int i = 0; i < k; i++) {
      double vi = v;
      while (vi > 1e-10) {
        if (vi > kj) {
          a[i].push_back(make_pair(j, kj));
          vi -= kj;
          kj = 0.0;
        } else {
          a[i].push_back(make_pair(j, vi));
          kj -= vi;
          vi = 0.0;
        }
        if (kj < 1e-10) {
          j++;
          kj = m;
        }
      }
    }
  } else {
    int j = 0;
    double kj = m;
    int Kol = 0;
    for (int i = 0; i < k; i++) {
      Kol++;
      if (Kol == 3) {
        printf("NO\n");
        return 0;
      }
      double vi = v;
      while (vi > 1e-10) {
        if (vi > kj) {
          a[i].push_back(make_pair(j, kj));
          vi -= kj;
          kj = 0.0;
        } else {
          a[i].push_back(make_pair(j, vi));
          kj -= vi;
          vi = 0;
        }
        if (kj < 1e-10) {
          kj = m;
          j++;
          Kol = 0;
          if (vi > 1e-10) Kol++;
        }
      }
    }
    if (j < n) {
      printf("NO\n");
      return 0;
    }
  }
  cout << "YES" << endl;
  cout << fixed << setprecision(9);
  for (int i = 0; i < k; i++) {
    for (int j = 0; j < a[i].size(); j++)
      cout << a[i][j].first + 1 << " " << a[i][j].second << " ";
    cout << endl;
  }
  return 0;
}
