#include <bits/stdc++.h>
using namespace std;
int a[5000 + 5], d[5000 + 5], f[5][5000 + 5], t, dv;
int c[5000 + 5][5], ans[100000][5], ai, mt;
int main() {
  int n, k, v, i, j, s = 0, m;
  cin >> n >> k >> v;
  dv = v % k;
  for (i = 1; i <= n; i++) {
    cin >> a[i];
    d[i] = a[i] % k;
    s = s + a[i];
  }
  if (s < v) {
    cout << "NO" << endl;
    return 0;
  }
  t = 0;
  f[0][0] = 1;
  for (i = 1; i <= n; i++) {
    for (j = 0; j <= k; j++) {
      if (f[1 - t][j] != 1) f[1 - t][j] = f[t][j];
      if (f[t][j] == 1 && f[t][(j + d[i]) % k] == 0) {
        f[1 - t][(j + d[i]) % k] = 1;
        c[(j + d[i]) % k][0] = j;
        c[(j + d[i]) % k][1] = i;
      } else if (f[t][j] == 1 && (j + d[i]) % k == 0 && dv == 0 && v != 0) {
        dv = k;
        f[1 - t][k] = 1;
        c[k][0] = j;
        c[k][1] = i;
      }
    }
    t = 1 - t;
  }
  if (f[t][dv] == 0) {
    cout << "NO" << endl;
    return 0;
  }
  t = dv;
  m = 0;
  while (t != 0) {
    if (m == 0)
      m = c[t][1];
    else {
      ai++;
      ans[ai][1] = (a[c[t][1]] + k - 1) / k;
      ans[ai][2] = c[t][1];
      ans[ai][3] = m;
      a[m] += a[c[t][1]];
      a[c[t][1]] = 0;
    }
    t = c[t][0];
  }
  if (m == 0) {
    m = 1;
    ai++;
    ans[ai][1] = (a[m] + k - 1) / k;
    ans[ai][2] = m;
    ans[ai][3] = 2;
    a[2] = a[2] + m;
    a[m] = 0;
  }
  mt = 1;
  if (m == 1) mt = 2;
  if (a[m] < v) {
    for (i = 1; i <= n; i++) {
      if (a[i] == 0 || i == mt || i == m) continue;
      ai++;
      ans[ai][1] = (a[i] + k - 1) / k;
      ans[ai][2] = i;
      ans[ai][3] = mt;
      a[mt] = a[mt] + a[i];
      a[i] = 0;
      if (a[m] + a[mt] >= v) i = n + 1;
    }
    if (a[m] + a[mt] < v) {
      cout << "NO" << endl;
      return 0;
    }
  }
  cout << "YES" << endl;
  for (i = 1; i <= ai; i++)
    if (ans[i][1] != 0)
      cout << ans[i][1] << ' ' << ans[i][2] << ' ' << ans[i][3] << endl;
  if (a[m] < v) cout << (v - a[m]) / k << ' ' << mt << ' ' << m;
  if (a[m] > v) cout << (a[m] - v) / k << ' ' << m << ' ' << mt;
  return 0;
}
