#include <assert.h>
#include <stdio.h>
#include <stdlib.h>

#include "game.h"

static int __chosen[200000 + 100][2], __nr_chosen = 0;
static FILE* __fin;
static FILE* __fout;

void propagate() {
    fprintf(__fout, "%d\n", (int)__nr_chosen);
    fflush(__fout);

    for(int i = 0; i < __nr_chosen; i++){
        fprintf(__fout, "%d %d\n", __chosen[i][0], __chosen[i][1]);
        fflush(__fout);
    }
    __nr_chosen = 0;
}

void chooseInterval(int left, int right) {
    if(__nr_chosen < 200000 + 10){
        __chosen[__nr_chosen][0] = left;
        __chosen[__nr_chosen][1] = right;
        ++__nr_chosen;
    }
}

int main(int argc, char **argv) {
    __fin = fopen(argv[1], "r");
    __fout = fopen(argv[2], "w");
    int n, m, q;
    if(fscanf(__fin, "%d %d %d", &n, &m, &q) != 3) {
      exit(0);
    }
    init(n, m);
    propagate();
    for(int i = 1;i <= q; i++) {
      int x, y;
      if(fscanf(__fin, "%d %d", &x, &y) != 2){
        exit(0);
      }
      query(x, y);
      propagate();
    }
    fclose(__fin);
    fclose(__fout);
    return 0;
}
