#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vi = vector<int>;
using vll = vector<ll>;
using vb = vector<bool>;
using vvi = vector<vi>;
using si = set<int>;
using pi = pair<int, int>;
using pll = pair<ll, ll>;
template <typename Iter>
inline ostream &streamByIterators(ostream &os, Iter beg, Iter end) {
  os << '{';
  if (beg != end) {
    os << *beg;
    while (++beg != end) os << ", " << *beg;
  };
  return os << '}';
}
template <typename T>
inline ostream &operator<<(ostream &os, const vector<T> &v) {
  return streamByIterators(os, v.begin(), v.end());
}
template <typename T>
inline ostream &operator<<(ostream &os, const set<T> &s) {
  return streamByIterators(os, s.begin(), s.end());
}
template <typename T, size_t size>
inline ostream &operator<<(ostream &os, const array<T, size> &arr) {
  return streamByIterators(os, arr.begin(), arr.end());
}
template <typename A, typename B>
inline ostream &operator<<(ostream &os, const pair<A, B> &p) {
  return os << '(' << p.first << ", " << p.second << ')';
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  const string abacaba = "abacaba";
  int _t;
  cin >> _t;
  while (_t--) {
    int n;
    cin >> n;
    string str;
    cin >> str;
    bool succ = false;
    for (int i = 0; i <= n - 7; ++i) {
      bool ok = true;
      for (int j = 0; j < 7; ++j)
        if (str[i + j] != abacaba[j] && str[i + j] != '?') {
          ok = false;
          break;
        }
      if (ok) {
        string t = str;
        for (int j = 0; j < 7; ++j) t[i + j] = abacaba[j];
        for (char &ref : t)
          if (ref == '?') ref = 'k';
        if (t.find(abacaba, t.find(abacaba) + 1) == string::npos) {
          succ = true;
          cout << "Yes\n";
          cout << t << '\n';
          break;
        }
      }
    }
    if (!succ) cout << "No\n";
  }
  return 0;
}
