func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m, s, d;   vector<int> a;   map<int, int> p, q;   int main() {     ios_base::sync_with_stdio(false);     cin.tie(nullptr);     cin >> n >> m >> s >> d;     a.resize(n);     for (int i = 0; i < n; ++i) {       cin >> a[i];     }     sort(a.begin(), a.end());     if (a[0] <= s) {       cout <<  IMPOSSIBLE  << endl;       return 0;     }     p[a[0] - 1] = 0;     for (int i = 0; i < n; ++i) {       int next = a[i] + 1;       if (binary_search(a.begin(), a.end(), next)) {         continue;       }       int prev = next - d;       auto pi = p.lower_bound(prev);       if (pi == p.end()) {         continue;       }       q[next] = pi->first;       if (i < n - 1 && next + s < a[i + 1]) {         p[a[i + 1] - 1] = next;       } else {         if (i == n - 1) {           p[m] = next;         }       }     }     if (p.find(m) != p.end()) {       int last = m;       vector<pair<int, bool>> res;       while (last != 0) {         int prev = p[last];         if (prev < last) {           res.push_back(make_pair(last - prev, true));           last = prev;         }         if (last > 0) {           int prev_j = q[last];           res.push_back(make_pair(last - prev_j, false));           last = prev_j;         }       }       reverse(res.begin(), res.end());       for (auto x : res) {         if (x.second) {           cout <<  RUN   << x.first <<   n ;         } else {           cout <<  JUMP   << x.first <<   n ;         }       }     } else {       cout <<  IMPOSSIBLE  << endl;     }   }   