/* Грейдър-посредник (manager) за задачата. Работи с двата процеса на решението:
   процес 0 играе ролята на Сашка (encode), процес 1 -- на Звезденчо (answer).
   Извежда "OK <най-голямо h>" при изцяло верни отговори или "ERR <причина>". */
#include "manager.h"
#include <iostream>
#include <string>
#include <vector>

const std::string PASSWORD = "i4ka_mi_dai_mi";
const int PROCESSES = 2;
const long long MAX_H = 1000000000;
char** fds;

void finish(){
    for (int i = 0; i < 2 * PROCESSES; i++) close(atoi(fds[i]));
    exit(0);
}
void check(bool cond, const std::string& reason){
    if (cond) return;
    std::cout << "ERR " << reason << std::endl;
    finish();
}
int main(int argc, char* argv[]){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    fds = argv + 1;
    fd_to_stream(fds, 2 * PROCESSES);

    int N, T;
    std::cin >> N >> T;
    std::vector<int> x(T), y(T), q(T);
    for (int i = 0; i < T; i++) std::cin >> x[i] >> y[i] >> q[i];

    // процес 0 -- Сашка: получава двойките (x, y) и връща числата h
    out(0) << 0 << "\n" << N << " " << T << "\n";
    for (int i = 0; i < T; i++) out(0) << x[i] << " " << y[i] << "\n";
    out(0) << std::flush;

    std::string pass;
    in(0) >> pass;
    check(pass == PASSWORD, "решението писа на стандартния изход");

    long long maxH = 0;
    std::vector<long long> h(T);
    for (int i = 0; i < T; i++){
        check(bool(in(0) >> h[i]), "твърде малко стойности h");
        check(1 <= h[i] && h[i] <= MAX_H, "невалидна стойност h");
        maxH = std::max(maxH, h[i]);
    }

    // процес 1 -- Звезденчо: получава двойките (q, h) и връща отговорите
    out(1) << 1 << "\n" << N << " " << T << "\n";
    for (int i = 0; i < T; i++) out(1) << q[i] << " " << h[i] << "\n";
    out(1) << std::flush;

    in(1) >> pass;
    check(pass == PASSWORD, "решението писа на стандартния изход");

    for (int i = 0; i < T; i++){
        int ans;
        check(bool(in(1) >> ans), "твърде малко отговори");
        check(ans == (q[i] == x[i] ? 1 : 0), "грешен отговор");
    }

    std::cout << "OK " << maxH << std::endl;
    finish();
    return 0;
}
