#include <bits/stdc++.h>
using namespace std;
struct less_key {
  bool operator()(const pair<int64_t, int64_t>& p1,
                  const pair<int64_t, int64_t>& p2) {
    return p1.first < p2.first ||
           (p1.first == p2.first && p1.second > p2.second);
  }
};
struct pair_hash {
  std::size_t operator()(const pair<int64_t, int64_t>& k) const {
    return static_cast<size_t>(k.first ^ k.second);
  }
};
int64_t n, m, s, d;
int64_t a[200005];
vector<pair<int64_t, int64_t> > p;
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> m >> s >> d;
  for (int64_t i = 0; i < n; i++) {
    cin >> a[i];
  }
  sort(a, a + n);
  if (a[0] - 1 < s) {
    cout << "IMPOSSIBLE" << endl;
    return 0;
  }
  p.push_back({a[0], a[0]});
  for (int64_t i = 1; i < n; i++) {
    pair<int64_t, int64_t>& c = p.back();
    if (a[i] - c.second - 2 < s) {
      c.second = a[i];
    } else {
      p.push_back({a[i], a[i]});
    }
  }
  for (int64_t i = 0; i < p.size(); i++) {
    pair<int64_t, int64_t>& c = p[i];
    if (c.second - c.first + 2 > d) {
      cout << "IMPOSSIBLE" << endl;
      return 0;
    }
  }
  int64_t c = 0;
  for (int64_t i = 0; i < p.size(); i++) {
    cout << "RUN " << ((p[i].first - 1) - c) << endl;
    cout << "JUMP " << p[i].second - p[i].first + 2 << endl;
    c = p[i].second + 1;
  }
  if (c != m) {
    cout << "RUN " << m - c << endl;
  }
  return 0;
}
