func_code_string: #include <bits/stdc++.h>   using namespace std;   using ll = long long;   using ld = long double;   using ull = unsigned long long;   using pii = pair<int, int>;   using vi = vector<int>;   struct res {     int x, t;     bool operator<(const res &z) const { return x < z.x; }     bool operator==(const res &z) const { return x == z.x && t == z.t; }   };   const res E = {-1, 0};   const int M = 1e9;   void q(int cnt, int x, int y) {     if (cnt) cout << cnt <<     << x + 1 <<     << y + 1 <<   n ;   }   int main() {     ios::sync_with_stdio(0), cin.tie(0), cout.tie(0), cout << setprecision(15);     int n, k, v;     cin >> n >> k >> v;     vi a(n);     for (int &x : a) cin >> x;     vector<vector<res>> dp(n + 1, vector<res>(k, E));     dp[0][0] = {0, 0};     for (int i = 1; i <= n; ++i) {       dp[i] = dp[i - 1];       for (res &r : dp[i]) r.t = 0;       for (int j = 0; j < k; ++j)         if (!(dp[i - 1][j] == E)) {           auto &l = dp[i][(j + a[i - 1]) % k];           l = max(l, {dp[i - 1][j].x + a[i - 1], 1});           dp[i][j] = max(dp[i][j], {dp[i - 1][j].x + a[i - 1] / k * k, 0});         }     }     if (dp[n][v % k] == E) return cout <<  NO n , 0;     vi b, g;     for (int i = n, c = v % k; i >= 1; --i) {       if (dp[i][c].t)         b.push_back(i - 1), c = (c - a[i - 1] % k + k) % k;       else         g.push_back(i - 1);     }     int cap = 0;     for (int x : b) cap += a[x];     int ad = 0;     for (int x : g) ad += a[x];     cap += ad / k * k;     if (cap < v) return cout <<  NO n , 0;     cout <<  YES n ;     int r, cur = 0, ot;     if (((int)(b).size())) {       r = b[0], cur = a[r];       for (int i = 1; i < ((int)(b).size()); ++i) {         q(M, b[i], r), cur += a[b[i]];       }       ot = r == 0 ? 1 : 0;     } else {       r = 0, ot = 1;       q(M, r, ot);     }     for (int x : g)       if (x != ot) q(M, x, ot);     q(cur / k, r, ot), cur %= k;     q((v - cur) / k, ot, r);   }   