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
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
#include <ctime>

typedef long long ll;

using namespace std;

inline bool spr1(ll& liczba_1) {
    if(liczba_1 > 2){
        if (((((liczba_1 % 3) % 4) % 5) % 6) == 0) return true;
        if (((((liczba_1 % 4) % 3) % 5) % 6) == 0) return true;
        if (((((liczba_1 % 5) % 3) % 4) % 6) == 0) return true;
        if (((((liczba_1 % 3) % 5) % 4) % 6) == 0) return true;
        if (((((liczba_1 % 4) % 5) % 3) % 6) == 0) return true;
        if (((((liczba_1 % 5) % 4) % 3) % 6) == 0) return true;
        if (((((liczba_1 % 6) % 4) % 3) % 5) == 0) return true;
        if (((((liczba_1 % 4) % 6) % 3) % 5) == 0) return true;
        if (((((liczba_1 % 3) % 6) % 4) % 5) == 0) return true;
        if (((((liczba_1 % 6) % 3) % 4) % 5) == 0) return true;
        if (((((liczba_1 % 4) % 3) % 6) % 5) == 0) return true;
        if (((((liczba_1 % 3) % 4) % 6) % 5) == 0) return true;
        if (((((liczba_1 % 3) % 5) % 6) % 4) == 0) return true;
        if (((((liczba_1 % 5) % 3) % 6) % 4) == 0) return true;
        if (((((liczba_1 % 6) % 3) % 5) % 4) == 0) return true;
        if (((((liczba_1 % 3) % 6) % 5) % 4) == 0) return true;
        if (((((liczba_1 % 5) % 6) % 3) % 4) == 0) return true;
        if (((((liczba_1 % 6) % 5) % 3) % 4) == 0) return true;
        if (((((liczba_1 % 6) % 5) % 4) % 3) == 0) return true;
        if (((((liczba_1 % 5) % 6) % 4) % 3) == 0) return true;
        if (((((liczba_1 % 4) % 6) % 5) % 3) == 0) return true;
        if (((((liczba_1 % 6) % 4) % 5) % 3) == 0) return true;
        if (((((liczba_1 % 5) % 4) % 6) % 3) == 0) return true;
        if (((((liczba_1 % 4) % 5) % 6) % 3) == 0) return true;
    }
    return false;
}

inline char losowanie_litery(ll i) {
    if (i == 6) {
        char tab_liter[2] = { 'o', 'w'};
        return tab_liter[(rand() % 2)];
    }
    if (i == 5) {
        char tab_liter[9] = { 'g', 'k', 'm', 'n', 's', 'u', 'v', 'y', 'z'};
        return tab_liter[(rand() % 9)];
    }
    if (i == 4) {
        char tab_liter[10] = { 'c', 'e', 'f', 'i', 'j', 'l', 'q', 'r', 't', 'x'};
        return tab_liter[(rand() % 10)];
    }
    if (i == 3) {
        char tab_liter[5] = { 'a', 'b', 'd', 'h', 'p' };
        return tab_liter[(rand() % 5)];
    }
}
inline void tab(ll& n, ll& liczba_1, ll tab1[4]){
    for (ll i6 = 0; i6 <= n; i6++) {
        for (ll i5 = 0; i5 <= (n - i6); i5++) {
            for (ll i4 = 0; i4 <= (n - i6 - i5); i4++) {
                for (ll i3 = 0; i3 <= (n - i6 - i5 - i4); i3++) {
                    ll x = ((6 * i6) + (5 * i5) + (4 * i4) + (3 * i3));
                    ll y = (i6 + i5 + i4 + i3);
                    if ((x == liczba_1) && (y == n)) {
                        tab1[0] = i6;
                        tab1[1] = i5;
                        tab1[2] = i4;
                        tab1[3] = i3;
                    }
                }
            }
        }
    }

}

inline string run2(ll& n, ll& liczba_1) {
    if (spr1(liczba_1)) {
        ll tab1[4] = { 0,0,0,0 };
        string wynik;
        tab(n, liczba_1, tab1);
        for (int i = 0; i < 4; i++){
            for (ll j = 0; j < tab1[i]; j++) {
                if (i == 0) {
                    wynik += losowanie_litery(6);
                }
                if (i == 1) {
                    wynik += losowanie_litery(5);
                }
                if (i == 2) {
                    wynik += losowanie_litery(4);
                }
                if (i == 3) {
                    wynik += losowanie_litery(3);
                }
            }
        }

        return wynik;
    }
    else {
        return "NIE";
    }
}

inline ll oblicz_licz_1(ll& n) {
    ll liczba_1 = 0;
    for (ll i = 0; i < (8 * n); i++) {
        char znak;
        cin >> znak;
        if (znak == '1') {
            liczba_1++;
        }
    }
    return liczba_1;
}

int main() {
    srand(time(NULL));
    ll n;
    cin >> n;
    ll liczba_1 = oblicz_licz_1(n);        
    cout << run2(n, liczba_1);
    return 0;}