#include <bits/stdc++.h>
using namespace std;
const int maxn = 200000 + 10;
int x[maxn];
vector<int> R, J;
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", &x[i]);
    if (n == 0) {
      printf("RUN %d\n", m);
      continue;
    }
    sort(x, x + n);
    R.clear();
    J.clear();
    if (x[0] - 1 < s)
      printf("IMPOSSIBLE\n");
    else {
      R.push_back(x[0] - 1);
      bool pos = true;
      int j;
      for (int i = 0; i < n && pos; i = j + 1) {
        bool ok = false;
        for (j = i; j < n; j++) {
          if (x[j] + 1 - (x[i] - 1) > d) break;
          if (j == n - 1) {
            ok = true;
            J.push_back(x[j] + 1 - (x[i] - 1));
            if (x[j] + 1 < m) R.push_back(m - (x[j] + 1));
            break;
          } else if (x[j + 1] - 1 - (x[j] + 1) >= s) {
            ok = true;
            J.push_back(x[j] + 1 - (x[i] - 1));
            R.push_back(x[j + 1] - 1 - (x[j] + 1));
            break;
          }
        }
        if (!ok) {
          pos = false;
          break;
        }
      }
      if (!pos)
        printf("IMPOSSIBLE\n");
      else {
        for (int i = 0; i < J.size(); i++)
          printf("RUN %d\nJUMP %d\n", R[i], J[i]);
        if (R.size() > J.size()) printf("RUN %d\n", R.back());
      }
    }
  }
  return 0;
}
