#include <bits/stdc++.h>
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("O3")
#pragma GCC target("avx")
const long long MOD = 1000000007;
const long double PI = 3.1415926535898;
const long long LIM = 100005;
using namespace std;
long long fpow(long long x, long long y) {
  long long temp;
  if (y == 0) return 1;
  temp = fpow(x, y / 2);
  if (y % 2 == 0)
    return temp * temp;
  else
    return x * temp * temp;
}
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
void sieve(long long n) {
  bool prime[5 * LIM];
  memset(prime, true, sizeof(prime));
  for (long long p = 2; p * p <= n; p++)
    if (prime[p] == true)
      for (long long i = p * p; i <= n; i += p) prime[i] = false;
  prime[1] = 0;
}
inline long long read() {
  long long p = 1, ans = 0;
  char ch = getchar();
  while (ch < 48 || ch > 57) {
    if (ch == '-') p = -1;
    ch = getchar();
  }
  while (ch >= 48 && ch <= 57) {
    ans = (ans << 3) + (ans << 1) + ch - 48;
    ch = getchar();
  }
  return ans * p;
}
bool isPrime(long long n) {
  if (n <= 1) return false;
  if (n <= 3) return true;
  if (n % 2 == 0 || n % 3 == 0) return false;
  for (long long i = 5; i * i <= n; i = i + 6)
    if (n % i == 0 || n % (i + 2) == 0) return false;
  return true;
}
map<long long, long long> primeFactors(long long n) {
  map<long long, long long> make_pair;
  while (n % 2 == 0) {
    if (make_pair.count(2) == 1)
      make_pair[2]++;
    else
      make_pair.insert({2, 1});
    n = n / 2;
  }
  for (long long i = 3; i <= sqrt(n); i = i + 2) {
    while (n % i == 0) {
      if (make_pair.count(i) == 1)
        make_pair[i]++;
      else
        make_pair.insert({i, 1});
      n = n / i;
    }
  }
  if (n > 2) {
    if (make_pair.count(n) == 1)
      make_pair[n]++;
    else
      make_pair.insert({n, 1});
  }
  return make_pair;
}
long long compare(string a, string b) {
  if (a.empty()) return 0;
  for (long long i = 0; i < a.length(); i++) {
    if (a[i] > b[i])
      return 1;
    else if (a[i] < b[i])
      return -1;
  }
  return 0;
}
bool isPalindrome(string str) {
  long long l = 0;
  long long h = str.length() - 1;
  while (h > l) {
    if (str[l++] != str[h--]) {
      return false;
    }
  }
  return true;
}
long long maxSum(vector<long long> a) {
  long long max_so_far = a[0];
  long long curr_max = a[0];
  for (long long i = 1; i < a.size(); i++) {
    curr_max = max(a[i], curr_max + a[i]);
    max_so_far = max(max_so_far, curr_max);
  }
  return max_so_far;
}
long long maxlength(vector<long long> a) {
  long long size = a.size();
  long long max_so_far = INT_MIN, max_ending_here = 0, start = 0, end = 0,
            s = 0;
  for (long long i = 0; i < size; i++) {
    max_ending_here += a[i];
    if (max_so_far < max_ending_here) {
      max_so_far = max_ending_here;
      start = s;
      end = i;
    }
    if (max_ending_here <= 0) {
      max_ending_here = 0;
      s = i + 1;
    }
  }
  return (end - start + 1);
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long t;
  cin >> t;
  for (long long tt = 1; tt <= t; ++tt) {
    long long n, r, p, s, cnt = 0;
    cin >> n >> r >> p >> s;
    string str;
    cin >> str;
    vector<char> ans(n, 'A');
    for (long long i = 0; i < str.length(); i++) {
      if (str[i] == 'R' && p > 0) {
        ans[i] = 'P';
        cnt++;
        p--;
      }
      if (str[i] == 'P' && s > 0) {
        ans[i] = 'S';
        cnt++;
        s--;
      }
      if (str[i] == 'S' && r > 0) {
        ans[i] = 'R';
        cnt++;
        r--;
      }
    }
    if (cnt < ceil(n / 2.0))
      cout << "NO"
           << "\n";
    else {
      cout << "YES"
           << "\n";
      for (long long i = 0; i < n; i++) {
        if (ans[i] == 'A') {
          if (p > 0) {
            ans[i] = 'P';
            p--;
          } else if (r > 0) {
            ans[i] = 'R';
            r--;
          } else if (s > 0) {
            ans[i] = 'S';
            s--;
          }
        }
        cout << ans[i];
      }
      cout << "\n";
    }
  }
  return 0;
}
