func_code_string: #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 ;       }     }   }   