#include <bits/stdc++.h>
using namespace std;
struct RunArea {
  int start;
  int stop;
};
int main() {
  int n, m, s, d;
  cin >> n >> m >> s >> d;
  vector<int> a(n);
  for (auto& ai : a) cin >> ai;
  sort(a.begin(), a.end());
  if (n == 0) {
    cout << "RUN " << m + 1 << endl;
    return 0;
  }
  vector<RunArea> run_areas;
  int start = 0, stop = a.front() - 1;
  for (int i = 0; i < n; i++) {
    if (i > 0 && a[i] - 1 != a[i - 1]) stop = a[i] - 1;
    if (stop - start >= s) {
      run_areas.push_back({start, stop});
      start = stop;
    }
    if ((i < n - 1 && a[i] + 1 != a[i + 1]) || i == n - 1) start = a[i] + 1;
  }
  run_areas.push_back({start, m});
  bool impossible = false;
  if (run_areas.empty() || run_areas.front().start != 0) impossible = true;
  for (int i = 1; i < run_areas.size(); i++) {
    if (run_areas[i].start - run_areas[i - 1].stop > d) impossible = true;
  }
  if (impossible) {
    cout << "IMPOSSIBLE" << endl;
  } else {
    for (int i = 0; i < run_areas.size(); i++) {
      if (run_areas[i].stop - run_areas[i].start > 0)
        cout << "RUN " << run_areas[i].stop - run_areas[i].start << endl;
      if (i < run_areas.size() - 1)
        cout << "JUMP " << run_areas[i + 1].start - run_areas[i].stop << endl;
    }
  }
  return 0;
}
