#include <bits/stdc++.h>
using namespace std;
int n, m, s, d;
int x[200228];
pair<int, int> din[200228];
int pr[200228];
vector<pair<int, int> > ans;
int main() {
  scanf("%d%d%d%d", &n, &m, &s, &d);
  for (int i = 0; i < n; i++) scanf("%d", &x[i]);
  sort(x, x + n);
  if (x[0] <= s || d == 1) {
    printf("IMPOSSIBLE\n");
    return 0;
  }
  din[0] = make_pair(x[0] + 1, x[0] + d - 1);
  for (int i = 1; i < n; i++) {
    if (x[i] - x[i - 1] - 2 >= s) {
      din[i] = make_pair(x[i] + 1, x[i] + d - 1);
      pr[i] = i;
    } else {
      if (din[i - 1].second > x[i]) {
        pr[i] = pr[i - 1];
        din[i] = make_pair(x[i] + 1, din[i - 1].second);
      } else {
        printf("IMPOSSIBLE\n");
        return 0;
      }
    }
  }
  if (din[n - 1].second < m) ans.push_back(make_pair(0, m - din[n - 1].second));
  int pos = n - 1;
  int last = min(din[n - 1].second, m);
  while (pos != -1) {
    ans.push_back(make_pair(1, last - x[pr[pos]] + 1));
    last = x[pr[pos]] - 1;
    pos = pr[pos] - 1;
    if (pos != -1) {
      int prev = min(din[pos].second, last - s);
      ans.push_back(make_pair(0, last - prev));
      last = prev;
    } else
      ans.push_back(make_pair(0, last));
  }
  reverse(ans.begin(), ans.end());
  for (size_t i = 0; i < ans.size(); i++) {
    if (ans[i].first == 0)
      printf("RUN ");
    else
      printf("JUMP ");
    printf("%d\n", ans[i].second);
  }
  return 0;
}
