#include <bits/stdc++.h>
using namespace std;
template <class T>
void _Print(T &&x) {
  cerr << x << ")"
       << "\n";
}
template <class T, class... S>
void _Print(T &&x, S &&...y) {
  cerr << x << ", ";
  _Print(y...);
}
template <class T>
class compare {
 public:
  bool operator()(pair<T, T> &x, pair<T, T> &y) {
    if (x.first == y.first) {
      return x.second > y.second;
    }
    return x.first > y.first;
  }
};
template <class T>
ostream &operator<<(ostream &os, const pair<T, T> &a) {
  return os << a.first << " " << a.second;
}
long long power(long long a, int b) {
  long long po = 1;
  while (b) {
    if (b & 1) po *= a;
    a *= a;
    b >>= 1;
  }
  return po;
}
template <class T>
pair<T, T> operator+(const pair<T, T> &a, const pair<T, T> &b) {
  return {a.first + b.first, a.second + b.second};
}
template <class T>
pair<T, T> operator-(const pair<T, T> &a, const pair<T, T> &b) {
  return {a.first - b.first, a.second - b.second};
}
template <class T>
pair<T, T> operator*(const pair<T, T> &a, const pair<T, T> &b) {
  return {a.first * b.first, a.second * b.second};
}
template <class T>
pair<T, T> operator%(const pair<T, T> &a, const pair<T, T> &b) {
  return {a.first % b.first, a.second % b.second};
}
template <class T, class U>
pair<T, T> operator+(const pair<T, T> &a, const U &b) {
  return {a.first + b, a.second + b};
}
template <class T, class U>
pair<T, T> operator*(const pair<T, T> &a, const U &b) {
  return {a.first * b, a.second * b};
}
int Set(int N, int pos) { return N = N | (1 << pos); }
int reset(int N, int pos) { return N = N & ~(1 << pos); }
bool check(int N, int pos) { return (bool)(N & (1 << pos)); }
int main() {
  int n, m, s, d;
  cin >> n >> m >> s >> d;
  int ara[n];
  for (auto &x : ara) cin >> x;
  sort(ara, ara + n);
  int last = 0, ok = 1;
  vector<pair<string, int> > ans;
  for (int i = 0; i < n;) {
    if (ara[i] - last - 1 >= s) {
      int temp = ara[i] - 1 + d;
      int j = i + 1;
      while (j < n and ara[j] < temp) {
        if (ara[j] - ara[j - 1] - 2 >= s) break;
        j++;
      }
      j--;
      ans.emplace_back("RUN", ara[i] - last - 1);
      ans.emplace_back("JUMP", ara[j] - ara[i] + 2);
      last = ara[j] + 1;
      i = j + 1;
    } else {
      ok = 0;
      break;
    }
  }
  if (m - ara[n - 1] - 1 > 0) ans.emplace_back("RUN", m - ara[n - 1] - 1);
  ok &= d > 1;
  if (ok) {
    for (auto &v : ans) cout << v.first << " " << v.second << "\n";
  } else
    cout << "IMPOSSIBLE"
         << "\n";
  return 0;
}
