#include <bits/stdc++.h>
using namespace std;
const int Inf = 0x3f3f3f3f;
const double Pi = acos(-1.0);
const int Max = 200010;
int num[Max];
struct node {
  int sta, enn;
};
queue<struct node> que;
int Sol(int n, int m, int s, int d) {
  struct node pos;
  while (!que.empty()) que.pop();
  pos.sta = pos.enn = num[0];
  if (num[0] - 1 < s || d < 2) return 0;
  for (int i = 1; i < n; i++) {
    if (pos.enn - pos.sta + 2 > d) return 0;
    if (num[i] - pos.enn - 2 < s)
      pos.enn = num[i];
    else {
      que.push(pos);
      pos.sta = pos.enn = num[i];
    }
    if (pos.enn - pos.sta + 2 > d) return 0;
  }
  que.push(pos);
  return 1;
}
int main() {
  int n, m, s, d;
  while (~scanf("%d %d %d %d", &n, &m, &s, &d)) {
    for (int i = 0; i < n; i++) scanf("%d", &num[i]);
    sort(num, num + n);
    if (Sol(n, m, s, d)) {
      int mid = 0;
      struct node pos;
      while (mid < m) {
        if (!que.empty()) {
          pos = que.front();
          que.pop();
          printf("RUN %d\n", pos.sta - 1 - mid);
          printf("JUMP %d\n", pos.enn - pos.sta + 2);
          mid = pos.enn + 1;
        } else {
          printf("RUN %d\n", m - mid);
          mid = m;
        }
      }
    } else
      printf("IMPOSSIBLE\n");
  }
  return 0;
}
