#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5432;
int dp[MAXN][MAXN], a[MAXN], take[MAXN][MAXN], quo[MAXN], rem[MAXN], need[MAXN];
int main() {
  int N, K, V;
  while (~scanf("%d %d %d", &N, &K, &V)) {
    int ttl_sum = 0;
    for (int i = 1; i <= N; i++) {
      scanf("%d", &a[i]);
      quo[i] = a[i] / K;
      rem[i] = a[i] % K;
      ttl_sum += a[i];
    }
    memset(dp, 0, sizeof(dp));
    memset(take, 0, sizeof(take));
    memset(need, 0, sizeof(need));
    dp[0][0] = 0;
    for (int i = 1; i <= N; i++) {
      for (int j = 0; j < K; j++) {
        int prev = (j + K - (a[i] % K)) % K;
        if (prev) {
          if (dp[i - 1][prev] && dp[i - 1][prev] + a[i] > dp[i - 1][j]) {
            take[i][j] = 1;
            dp[i][j] = dp[i - 1][prev] + a[i];
          } else
            dp[i][j] = dp[i - 1][j];
        } else if (!prev) {
          if (dp[i - 1][prev] + a[i] > dp[i - 1][j]) {
            take[i][j] = 1;
            dp[i][j] = dp[i - 1][prev] + a[i];
          } else
            dp[i][j] = dp[i - 1][j];
        }
      }
    }
    if ((V % K && dp[N][V % K] && ttl_sum >= V)) {
      puts("YES");
      int tg = N;
      while (!take[tg][V % K]) tg--;
      int cur_i = tg - 1, cur_V = (V + K - (a[tg] % K)) % K, sum = a[tg];
      need[tg] = 1;
      while (cur_i) {
        if (take[cur_i][cur_V]) {
          need[cur_i] = 1;
          int cnt = a[cur_i] / K;
          if (a[cur_i] % K) cnt++;
          printf("%d %d %d\n", cnt, cur_i, tg);
          sum += a[cur_i];
          cur_V = (cur_V + (K - a[cur_i] % K)) % K;
        }
        cur_i--;
      }
      if (sum > V) {
        int tmp_i = 1;
        while (tmp_i == tg) tmp_i++;
        printf("%d %d %d\n", (sum - V) / K, tg, tmp_i);
      } else if (sum < V) {
        int tmp_i = 1;
        while (need[tmp_i]) tmp_i++;
        for (int i = tmp_i + 1; i <= N; i++) {
          if (need[i]) continue;
          int cnt = quo[i];
          if (rem[i]) cnt++;
          printf("%d %d %d\n", cnt, i, tmp_i);
        }
        printf("%d %d %d\n", (V - sum) / K, tmp_i, tg);
      }
    } else if (((V % K == 0) && ttl_sum >= V)) {
      puts("YES");
      int sum = a[1];
      for (int i = 2; i <= N; i++) {
        int cnt = quo[i];
        if (rem[i]) cnt++;
        if (cnt) printf("%d %d %d\n", cnt, i, 1);
        sum += rem[i] * K;
      }
      if (V != 0) printf("%d %d %d\n", (V / K), 1, 2);
    } else
      puts("NO");
  }
  return 0;
}
