#include <bits/stdc++.h>
int take() {
  int n;
  scanf("%d", &n);
  return n;
}
double ttake() {
  double n;
  scanf("%lf", &n);
  return n;
}
long long takes() {
  long long n;
  scanf("%lld", &n);
  return n;
}
int cas;
using namespace std;
bool approximatelyEqual(float a, float b, float epsilon) {
  return fabs(a - b) <= ((fabs(a) < fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
bool essentiallyEqual(float a, float b, float epsilon) {
  return fabs(a - b) <= ((fabs(a) > fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
bool definitelyGreaterThan(float a, float b, float epsilon) {
  return (a - b) > ((fabs(a) < fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
bool definitelyLessThan(float a, float b, float epsilon) {
  return (b - a) > ((fabs(a) < fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
int cnt[200005];
int main() {
  int tc = 1;
  while (tc--) {
    int n = take();
    string s, p = "ACGT";
    cin >> s;
    for (int i = 0; i <= n - 1; i += 1) {
      if (s[i] != '?') cnt[s[i]]++;
    }
    for (int i = 0; i <= n - 1; i += 1) {
      if (s[i] == '?') {
        int mn = INT_MAX;
        char ch;
        for (int k = 0; k <= 3; k += 1) {
          if (cnt[p[k]] < mn) {
            mn = cnt[p[k]];
            ch = p[k];
          }
        }
        cnt[ch]++;
        s[i] = ch;
      }
    }
    if (cnt['A'] == cnt['C'] && cnt['G'] == cnt['T'] && cnt['C'] == cnt['T'])
      cout << s << "\n";
    else
      printf("===\n");
  }
  { return 0; };
}
