#include <bits/stdc++.h>
using namespace std;
inline int mod(int a, int k) { return (a % k + k) % k; }
int main() {
  int n, k, v;
  cin >> n >> k >> v;
  vector<int> a(1 + n, 0);
  int ss = 0;
  for (int i = 1; i <= n; ++i) {
    cin >> a[i];
    ss += a[i];
  }
  if (ss < v) {
    cout << "NO\n";
    return 0;
  }
  int target = v % k;
  vector<vector<pair<int, int>>> dp(1 + n, vector<pair<int, int>>(k, {0, 0}));
  dp[0][0] = {-1, 0};
  for (int i = 1; i <= n; ++i) {
    for (int j = 0; j < k; ++j) {
      auto var1 = dp[i - 1][mod(j - a[i], k)];
      auto var2 = dp[i - 1][j];
      if (var1.first && var2.first) {
        if (var1.second + a[i] % k > var2.second) {
          dp[i][j] = {2, var1.second + a[i] % k};
        } else {
          dp[i][j] = {1, var2.second};
        }
      } else if (var1.first) {
        dp[i][j] = {2, var1.second + a[i] % k};
      } else if (var2.first) {
        dp[i][j] = {1, var2.second};
      }
    }
  }
  if (dp[n][target].first == 0) {
    cout << "NO\n";
    return 0;
  }
  if (n == 1 && a[1] != v) {
    cout << "NO\n";
    return 0;
  }
  cout << "YES\n";
  int x = -1;
  int y = -1;
  int curr = n;
  int rem1 = target;
  while (curr > 0) {
    if (dp[curr][rem1].first == 2) {
      if (x == -1) {
        x = curr;
        rem1 = mod(rem1 - a[curr], k);
      } else {
        if (a[curr] > 0) {
          cout << (a[curr] - 1) / k + 1 << " " << curr << " " << x << "\n";
        }
        a[x] += a[curr];
        rem1 = mod(rem1 - a[curr], k);
        a[curr] = 0;
      }
    } else {
      if (y == -1) {
        y = curr;
      } else {
        if (a[curr] > 0) {
          cout << (a[curr] - 1) / k + 1 << " " << curr << " " << y << "\n";
        }
        a[y] += a[curr];
        a[curr] = 0;
      }
    }
    --curr;
  }
  if (y == -1) {
    if (x == 1) {
      y = 2;
    } else {
      y = 1;
    }
  }
  if (x == -1) {
    if (y == 1) {
      x = 2;
    } else {
      x = 1;
    }
  }
  if (x != -1) {
    if (a[x] < v) {
      cout << (v - a[x]) / k << " " << y << " " << x << "\n";
    } else if (a[x] > v) {
      cout << (a[x] - v) / k << " " << x << " " << y << "\n";
    }
  }
}
