1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <bits/stdc++.h>
#define PB push_back
#define ST first
#define ND second

//#pragma GCC optimize ("O3")
//#pragma GCC target("tune=native")

//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
//using namespace __gnu_pbds;
//typedef tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;

using namespace std;
using ll = long long;
using pi = pair<int, int>;
using vi = vector<int>;

string s;
int n, cnt;
char t[4] = {'a','c', 'g', 'o'};

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cin >> n >> s;
	for(auto c : s) cnt += (c == '1');
	for(int four = 0; four <= 1; four++) {
		for(int five = 0; five <= 2; ++five) {
			int cur = n - four - five;
			int ones = cnt - 4 * four - 5 *  five;
			if(ones < 0 || (6 * cur - ones) < 0 || (6*cur - ones) % 3 != 0) continue;
			int three = (6 * cur - ones) / 3;
			if(three > cur) continue;
			for(int i = 0; i < three; ++i) {
				cout << t[0];
			}
			for(int i = 0; i < four; ++i) {
				cout << t[1];
			}
			for(int i = 0; i < five; ++i) {
				cout << t[2];
			}
			for(int i = 0; i < cur - three; ++i) {
				cout << t[3];
			}
			return 0;
		}
	}
	cout << "NIE";
}