#include <bits/stdc++.h>
using namespace std;
int main(int args, char *argv[]) {
  int n, w, m;
  if (args == 1) {
    cin >> n >> w >> m;
  } else {
    n = atoi(argv[1]);
    w = atoi(argv[2]);
    m = atoi(argv[3]);
  }
  if (m > 2 * n) {
    cout << "NO" << endl;
  } else {
    double each_get = (double)n * w / m;
    vector<double> person(m, each_get);
    vector<double> milk(n, (double)w);
    vector<vector<double> > take_amount(m, vector<double>());
    vector<vector<int> > take_from_bottle(m, vector<int>());
    vector<int> milk_used_times(n, 0);
    double amount_to_sub;
    int person_index = 0;
    int milk_index = 0;
    while (milk_index < n && person_index < m &&
           person[person_index] > 0.000001) {
      amount_to_sub = min(person[person_index], milk[milk_index]);
      person[person_index] -= amount_to_sub;
      milk[milk_index] -= amount_to_sub;
      milk_used_times[milk_index]++;
      take_from_bottle[person_index].push_back(milk_index + 1);
      take_amount[person_index].push_back(amount_to_sub);
      if (person[person_index] < 0.000001) {
        person_index++;
      }
      if (milk[milk_index] < 0.000001) {
        milk_index++;
      }
    }
    for (unsigned int i = 0; i < person.size(); i++) {
      if (person[i] > 0.000001) {
        cout << "NO" << endl;
        return 0;
      }
    }
    for (unsigned int i = 0; i < milk_used_times.size(); i++) {
      if (milk_used_times[i] > 2) {
        cout << "NO" << endl;
        return 0;
      }
    }
    cout << "YES" << endl;
    for (unsigned int i = 0; i < m; i++) {
      for (unsigned int j = 0; j < take_from_bottle[i].size(); j++) {
        printf("%d %6f ", take_from_bottle[i][j], take_amount[i][j]);
      }
      cout << endl;
    }
  }
  return 0;
}
