#include <bits/stdc++.h>
const int INF = 0x7F7F7F7F;
const double EPS = 1e-10;
const long long mod7 = 1e9 + 7;
const long long mod9 = 1e9 + 9;
using namespace std;
inline long long rit() {
  long long f = 0, key = 1;
  char c;
  do {
    c = getchar();
    if (c == '-') key = -1;
  } while (c < '0' || c > '9');
  do {
    f = f * 10 + c - '0';
    c = getchar();
  } while (c >= '0' && c <= '9');
  return f * key;
}
inline void fprt(double f) { printf("%.08lf", f); }
void init() {}
string s;
int n, cnt[256];
void read() {
  n = rit();
  ;
  cin >> s;
}
void solve() {
  if (n % 4 != 0) {
    cout << "===" << endl;
    return;
  }
  int mid = n / 4;
  for (int i = 0; i < (int)((s).size()); i++) {
    cnt[s[i]]++;
  }
  for (int i = 0; i < (int)((s).size()); i++) {
    if (s[i] == '?') {
      if (cnt['A'] < mid) {
        s[i] = 'A';
        cnt['A']++;
      } else if (cnt['C'] < mid) {
        s[i] = 'C';
        cnt['C']++;
      } else if (cnt['G'] < mid) {
        s[i] = 'G';
        cnt['G']++;
      } else {
        s[i] = 'T';
        cnt['T']++;
      }
    }
  }
  if (cnt['A'] != mid || cnt['C'] != mid || cnt['G'] != mid ||
      cnt['T'] != mid) {
    cout << "===" << endl;
    return;
  }
  for (auto i : s) cout << i;
  cout << endl;
}
int main() {
  int nn = 1;
  while (nn--) {
    init(), read(), solve();
  }
  return 0;
}
