#include <bits/stdc++.h>
using namespace std;
int bottles, volume, glasses;
vector<pair<int, int>> answer[50];
int has[50];
unordered_map<int, int> usage;
int main() {
  std::ios_base::sync_with_stdio(false);
  cin >> bottles >> volume >> glasses;
  int act_bottle = 0;
  int left_bottle = glasses;
  for (int glass = 0; glass < glasses; ++glass) {
    while (has[glass] < bottles) {
      usage[act_bottle]++;
      if (bottles - has[glass] >= left_bottle) {
        answer[glass].push_back({act_bottle, left_bottle});
        has[glass] += left_bottle;
        act_bottle++;
        left_bottle = glasses;
      } else {
        answer[glass].push_back({act_bottle, bottles - has[glass]});
        left_bottle -= bottles - has[glass];
        has[glass] = bottles;
      }
    }
  }
  int max_usage = 0;
  for (const pair<int, int>& pr : usage) max_usage = max(max_usage, pr.second);
  cout << fixed << setprecision(15);
  if (max_usage > 2)
    cout << "NO" << endl;
  else {
    cout << "YES\n";
    for (int g = 0; g < glasses; ++g) {
      for (const pair<int, int>& pr : answer[g])
        cout << pr.first + 1 << " "
             << ((double)pr.second / (double)glasses) * volume << " ";
      cout << "\n";
    }
  }
  return 0;
}
