#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("O3")
const long long inf = 1e18;
long long i, j, n, m, k, qq = 1, ma = -inf, mi = inf, fr, to, w, x, y;
char ch;
int main() {
  cin >> qq;
  while (qq--) {
    string t = "abacaba";
    cin >> n;
    string second;
    cin >> second;
    long long cnt = 0;
    for (i = 0; i <= n - 7; i++) {
      if (second.substr(i, 7) == t) cnt++;
    }
    if (cnt > 1) {
      cout << "NO\n";
      continue;
    } else if (cnt == 1) {
      cout << "YES\n";
      for (i = 0; i < n; i++) {
        if (second[i] == '?')
          cout << 'z';
        else
          cout << second[i];
      }
      cout << '\n';
      continue;
    }
    bool ans = false;
    vector<long long> p;
    for (i = 0; i <= n - 7; i++) {
      bool cur = true;
      j = 0;
      while (true) {
        if (second[i + j] == t[j] || second[i + j] == '?')
          j++;
        else {
          cur = false;
          break;
        }
        if (j == 7) break;
      }
      if (cur) {
        p.push_back(i);
      }
    }
    ans = false;
    for (i = 0; i < p.size(); i++) {
      long long j = p[i];
      bool cans1 = true;
      if (i < p.size() - 1) {
        cans1 = true;
        if (p[i + 1] == j + 4) {
          bool curf = true;
          for (long long k = j + 7; k <= j + 10; k++)
            if (second[k] == '?') curf = false;
          if (curf) cans1 = false;
        }
        if (p[i + 1] == j + 6) {
          bool curf = true;
          for (long long k = j + 6; k <= j + 12; k++)
            if (second[k] == '?') curf = false;
          if (curf) cans1 = false;
        }
      }
      bool cans2 = true;
      if (i > 0) {
        cans2 = true;
        if (p[i - 1] == j - 4) {
          bool curf = true;
          for (long long k = j - 4; k < j; k++)
            if (second[k] == '?') curf = false;
          if (curf) cans2 = false;
        }
        if (p[i - 1] == j - 6) {
          bool curf = true;
          for (long long k = j - 6; k < j; k++)
            if (second[k] == '?') curf = false;
          if (curf) cans2 = false;
        }
      }
      if (cans1 && cans2) {
        ans = true;
        break;
      }
    }
    if (!ans)
      cout << "NO\n";
    else {
      long long it = 0;
      for (long long j = p[i]; j < p[i] + 7; j++) {
        second[j] = t[it];
        it++;
      }
      cout << "YES\n";
      for (i = 0; i < n; i++) {
        if (second[i] == '?')
          cout << 'z';
        else
          cout << second[i];
      }
      cout << '\n';
    }
    continue;
    if (!ans)
      cout << "NO\n";
    else {
      cout << "YES\n";
      for (i = 0; i < n; i++) {
        if (second[i] == '?')
          cout << 'z';
        else
          cout << second[i];
      }
      cout << '\n';
    }
  }
  return 0;
}
