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

using namespace std;

#define REP(x,n) for(int x=0;x<(n);++x)
#define FOREACH(x, c) for(auto x = (c).begin(); x != (c).end(); ++x)

const string PATTERN = "PAPPAA";

void inline solveShort(const string& pattern, int n, int k) {
    if (n > pattern.length()) {
        cout << "NIE" << endl;
    } else {
        cout << pattern.substr(0, n) << endl;
    }
}

void solve() {
    int n,k;
    cin>>n>>k;

    if (k == 1) {
        solveShort("AP", n, k);
    } else if (k == 2) {
        solveShort("AAPP", n, k);
    } else if (k == 3) {
        solveShort("AAAPAPPP", n, k);
    } else {
        int fullPatterns = (n-k) / PATTERN.length();
        int lastPatternLength = n - k - PATTERN.length() * fullPatterns;
        cout << string(k, 'A');
        REP(x, fullPatterns) {
            cout << PATTERN;
        }
        cout << PATTERN.substr(0, lastPatternLength) << endl;
    }
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(nullptr);
    int t;
    cin>>t;
    REP(x,t) {
        solve();
    }
    return 0;
}