#include <bits/stdc++.h>
using namespace std;
long long modpow(long long a, long long b,
                 long long mod = (long long)(1e9 + 7)) {
  if (!b) return 1;
  a %= mod;
  return modpow(a * a % mod, b / 2, mod) * (b & 1 ? a : 1) % mod;
}
const int maxn = 5000, maxk = 5000;
int n, k, V;
int arr[maxn];
int dp[maxn + 1][maxk];
bool back[maxn + 1][maxk];
void propagate(int i, int j) {
  if (dp[i][j] == -1) return;
  if (dp[i + 1][j] < dp[i][j]) {
    dp[i + 1][j] = dp[i][j];
    back[i + 1][j] = false;
  }
  if (dp[i + 1][(j + arr[i]) % k] < dp[i][j] + 1) {
    dp[i + 1][(j + arr[i]) % k] = dp[i][j] + 1;
    back[i + 1][(j + arr[i]) % k] = true;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  memset(dp, -1, sizeof(dp));
  memset(back, false, sizeof(back));
  scanf("%d", &n), scanf("%d", &k), scanf("%d", &V);
  for (int i = 0; i < n; i++) scanf("%d", &arr[i]);
  dp[0][0] = 0;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < k; j++) propagate(i, j);
  for (int i = 0; i < n; i++) {
    if (arr[i] == V) {
      cout << "YES" << endl;
      exit(0);
    }
  }
  int j = V % k;
  if (dp[n][j] == -1) {
    cout << "NO" << endl;
    exit(0);
  }
  bool included[n];
  memset(included, false, sizeof(included));
  for (int i = n + 1 - 1; i >= 0; i--)
    if (i) {
      if (back[i][j]) {
        j = (j - arr[i - 1] % k + k) % k;
        included[i - 1] = true;
      }
    }
  int fi = -1, fo = -1;
  stringstream ss;
  for (int i = 0; i < n; i++)
    if (included[i])
      fi = i;
    else
      fo = i;
  long long sum1 = arr[fi], sum2 = (fo == -1 ? 0 : arr[fo]);
  for (int i = 0; i < n; i++) {
    if (included[i] && i != fi) {
      ss << max(1, int(ceil(1.00 * arr[i] / k))) << " " << i + 1 << " "
         << fi + 1 << endl;
      sum1 += arr[i];
    } else if (!included[i] && i != fo) {
      ss << max(1, int(ceil(1.00 * arr[i] / k))) << " " << i + 1 << " "
         << fo + 1 << endl;
      sum2 += arr[i];
    }
  }
  if (fi == -1) fi = (fo == 0 ? 1 : 0);
  if (sum1 + sum2 < V)
    cout << "NO" << endl;
  else {
    long long diff = (sum1 - V) / k;
    if (diff < 0)
      ss << -diff << " " << fo + 1 << " " << fi + 1 << endl;
    else if (diff > 0)
      ss << diff << " " << fi + 1 << " " << (fi == 0 ? 2 : 1) << endl;
    cout << "YES" << endl;
    cout << ss.str() << endl;
  }
  return 0;
}
