#include <bits/stdc++.h>
using namespace std;
int n, k, v, sum = 0;
int a[5100];
int dp[5100][5100];
int is[5100][5100];
int vis[5100];
vector<int> vec;
int main() {
  scanf("%d%d%d", &n, &k, &v);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]), sum += a[i];
  if (v == 0) {
    printf("YES\n");
    if (a[0] != 0) printf("%d %d %d\n", (a[0] - 1) / k + 1, 1, 2);
  } else if (sum < v) {
    printf("NO\n");
  } else {
    dp[0][a[0] % k] = 1;
    is[0][a[0] % k] = 1;
    for (int i = 1; i < n; i++) {
      for (int j = 0; j < k; j++) {
        if (dp[i - 1][j] == 0) continue;
        dp[i][j] = 1;
        if (dp[i - 1][(j + a[i]) % k] == 1) continue;
        dp[i][(j + a[i]) % k] = 1;
        is[i][(j + a[i]) % k] = 1;
      }
      if (dp[i][a[i] % k] != 1) {
        is[i][a[i] % k] = 1;
        dp[i][a[i] % k] = 1;
      }
    }
    if (dp[n - 1][v % k] == 0 && v % k != 0)
      printf("NO\n");
    else {
      printf("YES\n");
      int unused = 0;
      int now = v % k;
      int i = n - 1;
      while (i >= 0) {
        if (is[i][now] == 1) {
          vec.push_back(i);
          vis[i] = 1;
          now -= a[i];
          while (now < 0) {
            now += k;
          }
          now %= k;
        } else
          unused = i;
        i--;
      }
      if (vec.size() == 0) {
        unused = 0;
        for (int i = 0; i < n; i++) {
          if (vis[i] == 1) continue;
          if (i == unused) continue;
          printf("%d %d %d\n", (a[i] - 1) / k + 1, i + 1, unused + 1);
        }
        printf("%d %d %d\n", v / k, unused + 1, 2);
        return 0;
      }
      int sum = a[vec[0]];
      for (int i = 1; i < vec.size(); i++) {
        printf("%d %d %d\n", (a[vec[i]] - 1) / k + 1, vec[i] + 1, vec[0] + 1);
        sum += a[vec[i]];
      }
      if (sum > v) {
        printf("%d %d %d\n", (sum - v) / k, vec[0] + 1, unused + 1);
      } else if (sum < v) {
        for (int i = 0; i < n; i++) {
          if (vis[i] == 1) continue;
          if (i == unused) continue;
          printf("%d %d %d\n", (a[i] - 1) / k + 1, i + 1, unused + 1);
        }
        printf("%d %d %d\n", (v - sum) / k, unused + 1, vec[0] + 1);
      }
    }
  }
  return 0;
}
