#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int bins(int curInd, int d, int n, int* a) {
  int l = 1;
  int r = n;
  int x = a[curInd + 1] - 1 + d;
  if (a[n] < x) return n + 1;
  while (l <= r) {
    int m = (l + r) / 2;
    if (a[m] >= x) {
      r = m - 1;
      continue;
    } else if (a[m] < x && a[m + 1] >= x)
      return m;
    else {
      l = m + 1;
      continue;
    }
  }
  return -1;
}
bool canJump(int ind, int s, int* a) { return (a[ind + 1] - a[ind] - 2 >= s); }
void printAns(queue<string>& op, queue<int>& dist) {
  while (!op.empty()) {
    cout << op.front() << " " << dist.front() << "\n";
    op.pop();
    dist.pop();
  }
}
int main() {
  int n, m, s, d;
  cin >> n >> m >> s >> d;
  int* a = new int[n + 1];
  queue<string> op;
  queue<int> dist;
  a[0] = -1;
  for (int i = 1; i <= n; i++) cin >> a[i];
  sort(a + 1, a + 1 + n);
  if (a[1] == 1 || d == 1 || s > a[1] - 1) {
    cout << "IMPOSSIBLE" << endl;
    return 0;
  }
  int curInd = 0;
  int minPosInd = 0;
  while (1) {
    if (curInd == n) {
      if (m - a[n] - 1 != 0) {
        op.push("RUN");
        dist.push(m - a[n] - 1);
      }
      printAns(op, dist);
      return 0;
    }
    if (curInd == n - 1) {
      op.push("RUN");
      dist.push(a[curInd + 1] - a[curInd] - 2);
      op.push("JUMP");
      dist.push(2);
      if (m - a[n] - 1 != 0) {
        op.push("RUN");
        dist.push(m - a[n] - 1);
      }
      printAns(op, dist);
      return 0;
    }
    int nextInd = bins(curInd, d, n, a);
    if (nextInd == -1) {
      cout << "IMPOSSIBLE" << endl;
      return 0;
    }
    if (nextInd == n + 1) {
      op.push("RUN");
      dist.push(a[curInd + 1] - a[curInd] - 2);
      op.push("JUMP");
      dist.push(a[n] - a[curInd + 1] + 2);
      if (m - a[n] - 1 != 0) {
        op.push("RUN");
        dist.push(m - a[n] - 1);
      }
      printAns(op, dist);
      return 0;
    }
    int tmp = nextInd;
    while (nextInd > minPosInd && !canJump(nextInd, s, a)) nextInd--;
    if (nextInd == minPosInd) {
      cout << "IMPOSSIBLE" << endl;
      return 0;
    } else {
      op.push("RUN");
      dist.push(a[curInd + 1] - a[curInd] - 2);
      op.push("JUMP");
      dist.push(a[nextInd] - a[curInd + 1] + 2);
      curInd = nextInd;
      minPosInd = tmp;
    }
  }
  return 0;
}
