#include <bits/stdc++.h>
std::string alp = "TCGA";
int main() {
  int n;
  std::cin >> n;
  std::string s;
  s.reserve(n);
  std::cin >> s;
  if (n % 4) {
    std::cout << "===" << std::endl;
    return 0;
  }
  int nC = 0, nG = 0, nA = 0, nT = 0, nN = 0;
  for (int i = 0; i < s.length(); i++) {
    if (s[i] == 'A') nA++;
    if (s[i] == 'C') nC++;
    if (s[i] == 'G') nG++;
    if (s[i] == 'T') nT++;
    if (s[i] == '?') nN++;
  }
  int dif = 0, k = 0;
  if (nC >= nA && nC >= nG && nC >= nT) {
    dif = 3 * nC - nA - nG - nT;
    if (dif <= nN && ((nN - dif) % 4) == 0) {
      for (int i = 0; i < s.length(); i++) {
        if (s[i] == '?') {
          if (nC - nA > 0) {
            s[i] = 'A';
            nA++;
          } else if (nC - nG > 0) {
            s[i] = 'G';
            nG++;
          } else if (nC - nT > 0) {
            s[i] = 'T';
            nT++;
          } else {
            s[i] = alp[k];
            k++;
            k = k % 4;
          }
        }
      }
    } else {
      std::cout << "===" << std::endl;
      return 0;
    }
  } else if (nA >= nC && nA >= nG && nA >= nT) {
    dif = 3 * nA - nC - nG - nT;
    if (dif <= nN && ((nN - dif) % 4) == 0) {
      for (int i = 0; i < s.length(); i++) {
        if (s[i] == '?') {
          if (nA - nC > 0) {
            s[i] = 'C';
            nC++;
          } else if (nA - nG > 0) {
            s[i] = 'G';
            nG++;
          } else if (nA - nT > 0) {
            s[i] = 'T';
            nT++;
          } else {
            s[i] = alp[k];
            k++;
            k = k % 4;
          }
        }
      }
    } else {
      std::cout << "===" << std::endl;
      return 0;
    }
  } else if (nG >= nA && nG >= nC && nG >= nT) {
    dif = 3 * nG - nA - nC - nT;
    if (dif <= nN && ((nN - dif) % 4) == 0) {
      for (int i = 0; i < s.length(); i++) {
        if (s[i] == '?') {
          if (nG - nA > 0) {
            s[i] = 'A';
            nA++;
          } else if (nG - nC > 0) {
            s[i] = 'C';
            nC++;
          } else if (nG - nT > 0) {
            s[i] = 'T';
            nT++;
          } else {
            s[i] = alp[k];
            k++;
            k = k % 4;
          }
        }
      }
    } else {
      std::cout << "===" << std::endl;
      return 0;
    }
  } else if (nT >= nA && nT >= nC && nT >= nG) {
    dif = 3 * nT - nA - nC - nG;
    if (dif <= nN && ((nN - dif) % 4) == 0) {
      for (int i = 0; i < s.length(); i++) {
        if (s[i] == '?') {
          if (nT - nA > 0) {
            s[i] = 'A';
            nA++;
          } else if (nT - nG > 0) {
            s[i] = 'G';
            nG++;
          } else if (nT - nC > 0) {
            s[i] = 'C';
            nC++;
          } else {
            s[i] = alp[k];
            k++;
            k = k % 4;
          }
        }
      }
    } else {
      std::cout << "===" << std::endl;
      return 0;
    }
  }
  std::cout << s << std::endl;
  return 0;
}
