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
#include <iostream>
#include <vector>

char S[3] = {'P', 'K', 'N'};

int to_tit(char c) {
    if (c == S[0]) return 0;
    else if (c == S[1]) return 1;
    else if (c == S[2]) return 2;
    else return -1;
}

std::string to_bits(int pack, int bits = 19) {
    std::string msg;
    for (int i=0;i<bits;++i) {
        msg.push_back( (pack & (1<<i)) ? '1' : '0');
    }
    return msg;
}

char winner(char looser) {
    if (looser == 'P') return 'N';
    else if (looser == 'K') return 'P';
    else if (looser == 'N') return 'K';
    else return -1;
}

int n;
std::vector<int> to_packs(const std::string &msg, int bits = 19) {
    std::vector<int> P;
    int b = 0;
    int v = 0;
    for (int i=0;i<n;++i) {
        if (msg[i] == '1') v|=1<<b;
        ++b;
        if (b >= bits) {
            P.push_back(v);
            b = 0;
            v = 0;
        }
    }
    if (b > 0) P.push_back(v);
    return P;
}

int play(int output_pack, int tits = 12) {
    int input_pack = 0;
    int mul = 1;
    for (int i=0;i<tits;++i) {
        char output_c = S[output_pack%3];
        output_pack /= 3;
        std::cout << output_c << std::endl;
        char input_c;
        std::cin >> input_c;
        input_pack += to_tit(input_c)*mul;
        mul *= 3;

        if (output_c == input_c) continue; // tie
        // reverse
        std::cout << input_c << std::endl;
        std::cin >> input_c;
    }
    return input_pack;
}

int main() {
    std::ios_base::sync_with_stdio(0);
    std::string role;
    std::cin >> role;
    int T;
    std::cin >> n >> T;

    for (int t=0;t<T;++t) {
        std::string msg;
        std::cin >> msg;
        std::string input_msg;
        int nn = n;
        for (int output_pack : to_packs(msg)) {
            int input_pack = play(output_pack);
            int bits = std::min(19, nn);
            nn -= bits;
            input_msg += to_bits(input_pack, bits);
        }
        std::cout << "! " << input_msg << std::endl;
    }

    // if (role == "Algosia") {
        
    // } else if (role == "Bajtek") {
        
    // } else {
    //     std::cerr << "unsupported role" << std::endl;
    // }


    return 0;
}