#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const long long linf = 1e18;
const int inf = 1e9 + 7;
const int maxn = 1e5 + 100;
const long double PI = 3.14159265358;
const int ii[] = {-1, 1, 0, 0}, jj[] = {0, 0, -1, 1};
string s;
int a, c, g, t, n, em, mx;
vector<int> x;
int main() {
  cin >> n;
  cin >> s;
  for (int i = 0; i < ((int)s.size()); i++) {
    if (s[i] == '?')
      em++, x.push_back(i);
    else if (s[i] == 'A')
      a++;
    else if (s[i] == 'C')
      c++;
    else if (s[i] == 'G')
      g++;
    else
      t++;
  }
  mx = max({a, c, g, t});
  if (em < mx - a + mx - c + mx - g + mx - t) {
    cout << "===";
    return 0;
  }
  int idx = 0;
  while (a < mx) {
    a++;
    if (!em) {
      cout << "===";
      return 0;
    }
    int cur = x[idx++];
    s[cur] = 'A';
    em--;
  }
  while (g < mx) {
    g++;
    if (!em) {
      cout << "===";
      return 0;
    }
    int cur = x[idx++];
    s[cur] = 'G';
    em--;
  }
  while (c < mx) {
    c++;
    if (!em) {
      cout << "===";
      return 0;
    }
    int cur = x[idx++];
    s[cur] = 'C';
    em--;
  }
  while (t < mx) {
    t++;
    if (!em) {
      cout << "===";
      return 0;
    }
    int cur = x[idx++];
    s[cur] = 'T';
    em--;
  }
  if (em % 4) {
    cout << "===";
    return 0;
  }
  for (int i = 1; i <= em / 4; i++) {
    int cur = x[idx++];
    s[cur] = 'A';
  }
  for (int i = 1; i <= em / 4; i++) {
    int cur = x[idx++];
    s[cur] = 'C';
  }
  for (int i = 1; i <= em / 4; i++) {
    int cur = x[idx++];
    s[cur] = 'G';
  }
  for (int i = 1; i <= em / 4; i++) {
    int cur = x[idx++];
    s[cur] = 'T';
  }
  cout << s << endl;
}
