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
// pierwszy wygrywa tylko jak ma krawedzie ze wszystkich do jakiegos jednego node'a drugiego
// drugi wygrywa jak z kazdego jego cos wychodzi
// wpp. remis

#include <cstdio>
#include <algorithm>

constexpr int MAXN = 100001;
int t, snd_in[MAXN], snd_out[MAXN];
std::vector<int> ins, outs;

void solve_case(int cleanup) {
    int n, m, a, b;
    char c;
    scanf("%d%d", &n, &m);
    int fst_wins = 0, snd_0_out = n;
    for (int i = 0; i < m; ++i) {
        scanf("%d %c %d", &a, &c, &b);
//         printf("%d -- %c -- %d\n", a, c, b);
        --a; --b;
        if (c == '>') {
            ++snd_in[b];
            ins.push_back(b);
            if (snd_in[b] == n) {
                fst_wins = 1;
            }
        } else {
            ++snd_out[b];
            outs.push_back(b);
            if (snd_out[b] == 1) {
                --snd_0_out;
                if (!snd_0_out) {
                    fst_wins = -1;
                }
            }
        }
    }
    
    printf("%s\n", fst_wins == 1 ? "WYGRANA" : fst_wins == 0 ? "REMIS" : "PRZEGRANA");
    
    if (cleanup) {
        for (int i : ins) {
            --snd_in[i];
        }
        for (int i : outs) {
            --snd_out[i];
        }
        ins.clear();
        outs.clear();
    }
}

int main() {
    scanf("%d", &t);
    while (t--) {
        solve_case(t);
    }
}