#include <bits/stdc++.h>
#pragma comment(linker, "/stack:67108864")
using namespace std;
const long double EPS = 1e-9;
const long double PI = 3.1415926535897932384626433832795;
const int INF = 1000 * 1000 * 1000;
const int NMAX = 1000 * 1000;
int main() {
  ifstream ifile("input.txt");
  if (ifile) freopen("input.txt", "rt", stdin);
  if (ifile) {
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
  }
  long double n, m, w;
  while (cin >> n >> w >> m) {
    long double d = (n * w) / m;
    vector<vector<pair<int, long double> > > a(n);
    int j = 0;
    long double vs = d;
    for (int i = 0; i < int(n); ++i) {
      long double v = w;
      while ((v - vs) > EPS) {
        v -= vs;
        a[i].push_back(make_pair(j, vs));
        j++;
        vs = d;
      }
      if (v > EPS) {
        a[i].push_back(make_pair(j, v));
        vs -= v;
        if (vs < EPS) {
          j++;
          vs = d;
        }
        v = 0;
      }
    }
    bool good = true;
    for (int i = 0; i < int(n); ++i)
      if (a[i].size() > 2) good = false;
    vector<vector<pair<int, long double> > > ans(m);
    for (int i = 0; i < int(n); ++i) {
      for (int j = 0; j < int(a[i].size()); ++j) {
        ans[a[i][j].first].push_back(make_pair(i, a[i][j].second));
      }
    }
    if (good) {
      cout << "YES" << endl;
      for (int i = 0; i < int(m); ++i) {
        for (int j = 0; j < int(ans[i].size()); ++j) {
          printf("%d ", ans[i][j].first + 1);
          printf("%.7lf ", ans[i][j].second);
        }
        printf("\n");
      }
    } else
      cout << "NO" << endl;
    cout << endl;
  }
  return 0;
}
