#include <bits/stdc++.h>
using namespace std;
long long int n, s, d, m;
long long int a[200005], path[200005];
long long int st[200005], en[200005];
vector<pair<long long int, long long int> > v;
vector<pair<long long int, long long int> > g[200005];
long long int findp(long long int ind) {
  long long int p = v[ind].first + s, q = v[ind].second;
  if (ind == v.size() - 1) {
    if (m - st[ind] > 0) g[ind].push_back(make_pair(ind, m - st[ind]));
    return path[ind] = 1;
  }
  if (p > q) {
    return path[ind] = -1;
  }
  q += d;
  long long int r = lower_bound(st, st + v.size(), p) - st;
  if (r >= v.size()) {
    return path[ind] = -1;
  }
  long long int l = lower_bound(st, st + v.size(), q) - st;
  if (l >= v.size()) l--;
  for (long long int i = r; i <= l; i++) {
    if (path[i] == 0) findp(i);
    if (path[i] == 1) {
      if (st[i] - p > d) {
        if (p + (st[i] - (p + d)) <= en[ind])
          g[ind].push_back(make_pair(ind, (p + (st[i] - (p + d))) - st[ind]));
        else
          continue;
        p += st[i] - (p + d);
      } else
        g[ind].push_back(make_pair(ind, s));
      g[ind].push_back(make_pair(i, st[i] - p));
      return path[ind] = 1;
    }
  }
  return path[ind] = -1;
}
int main() {
  cin >> n >> m >> s >> d;
  for (long long int i = 0; i < n; i++) cin >> a[i];
  sort(a, a + n);
  if (a[0] != 1) {
    if (a[0] - 1 > 0) {
      if (a[0] - 1 >= s)
        v.push_back(make_pair(0, a[0] - 1));
      else {
        cout << "IMPOSSIBLE";
        return 0;
      }
    }
  }
  for (long long int i = 1; i < n; i++) {
    if (a[i - 1] + 1 <= a[i] - 1 && a[i] - a[i - 1] - 2 >= s)
      v.push_back(make_pair(a[i - 1] + 1, a[i] - 1));
  }
  if (m - (a[n - 1] + 1 >= s))
    v.push_back(make_pair(a[n - 1] + 1, m));
  else {
    cout << "IMPOSSIBLE";
    return 0;
  }
  for (long long int i = 0; i < v.size(); i++) {
    st[i] = v[i].first;
    en[i] = v[i].second;
  }
  long long int y = findp(0);
  if (path[0] == 1) {
    int f = 0;
    for (long long int i = 0;;) {
      if (g[i].size() == 0) break;
      f = 1;
      cout << "RUN " << g[i][0].second << "\n";
      if (g[i].size() > 1)
        cout << "JUMP " << g[i][1].second << "\n";
      else
        break;
      i = g[i][1].first;
    }
    if (f == 0) cout << "IMPOSSIBLE";
  } else
    cout << "IMPOSSIBLE";
}
