#include <bits/stdc++.h>
using namespace std;
int n, d[5], q;
char s[455];
vector<char> ans;
int main() {
  scanf("%d%s", &n, s + 1);
  for (int i = (1), _b = (n); i <= _b; ++i) {
    if (s[i] == 'A') d[1]++;
    if (s[i] == 'C') d[2]++;
    if (s[i] == 'G') d[3]++;
    if (s[i] == 'T') d[4]++;
    if (s[i] == '?') q++;
  }
  int Max = 0;
  for (int i = (1), _b = (4); i <= _b; ++i) Max = max(Max, d[i]);
  int need = 0;
  for (int i = (1), _b = (4); i <= _b; ++i) need += Max - d[i];
  if (need == 0 && q % 4 == 0) {
    for (int j = (1), _b = (q / 4); j <= _b; ++j) ans.push_back('A');
    for (int j = (1), _b = (q / 4); j <= _b; ++j) ans.push_back('C');
    for (int j = (1), _b = (q / 4); j <= _b; ++j) ans.push_back('G');
    for (int j = (1), _b = (q / 4); j <= _b; ++j) ans.push_back('T');
    int run = 0;
    for (int i = (1), _b = (n); i <= _b; ++i)
      if (s[i] == '?') s[i] = ans[run++];
    for (int i = (1), _b = (n); i <= _b; ++i) cout << s[i];
    return 0;
  }
  if ((q < need) || ((q - need) % 4))
    cout << "===";
  else {
    for (int j = (1), _b = (Max - d[1]); j <= _b; ++j) ans.push_back('A');
    for (int j = (1), _b = (Max - d[2]); j <= _b; ++j) ans.push_back('C');
    for (int j = (1), _b = (Max - d[3]); j <= _b; ++j) ans.push_back('G');
    for (int j = (1), _b = (Max - d[4]); j <= _b; ++j) ans.push_back('T');
    if ((q - need) % 4 == 0)
      for (int i = (1), _b = ((q - need) / 4); i <= _b; ++i) {
        ans.push_back('A');
        ans.push_back('C');
        ans.push_back('G');
        ans.push_back('T');
      }
    int run = 0;
    for (int i = (1), _b = (n); i <= _b; ++i)
      if (s[i] == '?') s[i] = ans[run++];
    for (int i = (1), _b = (n); i <= _b; ++i) cout << s[i];
  }
  return 0;
}
