#include <bits/stdc++.h>
using namespace std;
int n, m, s, d, obs[200010], can[200010], p;
set<int> sota, jao;
int main() {
  ios::sync_with_stdio(false);
  int a, b, c;
  cin >> n >> m >> s >> d;
  for (int i = 0; i <= n - 1; i++) {
    cin >> obs[i];
    sota.insert(obs[i]);
  }
  sort(obs, obs + n);
  for (int i = 0; i <= n - 1; i++) jao.insert(obs[i] + 1);
  for (int i = 0; i <= n - 1; i++) jao.erase(obs[i]);
  int x = 0;
  jao.insert(0);
  jao.insert(m);
  p = 0;
  while (!jao.empty()) {
    a = *(jao.begin());
    b = *(sota.upper_bound(a));
    if ((b - a) - 1 >= s || sota.upper_bound(a) == sota.end()) {
      can[p] = a;
      p++;
    }
    jao.erase(jao.begin());
  }
  for (int i = 0; i <= p - 1; i++) jao.insert(can[i]);
  if (can[0] == 0 && p) {
    x = 0;
    while (x < p) {
      a = *(sota.upper_bound(can[x]));
      b = *(jao.upper_bound(a));
      if (sota.upper_bound(can[x]) == sota.end())
        x++;
      else if (b - (a - 1) <= d)
        x++;
      else
        break;
    }
    if (x == p) {
      x = 0;
      while (x < p - 1) {
        a = *(sota.upper_bound(can[x]));
        if (sota.upper_bound(can[x]) == sota.end()) {
          cout << "RUN " << m - can[x] << endl;
          break;
        }
        b = *(jao.upper_bound(a));
        cout << "RUN " << (a - 1) - can[x] << endl;
        cout << "JUMP " << b - (a - 1) << endl;
        x++;
      }
    } else
      cout << "IMPOSSIBLE" << endl;
  } else
    cout << "IMPOSSIBLE" << endl;
  return 0;
}
