#include #define FOR(i, n) for(int i = 0; i < (n); ++i) #define REP(i, a, b) for(int i = (a); i < (b); ++i) #define TRAV(i, a) for(auto &i : (a)) #define X first #define Y second #define MP std::make_pair #define PR std::pair #define SZ(x) ((int)(x).size()) typedef long long ll; typedef std::pair PII; typedef std::vector VI; int main(){ std::ios_base::sync_with_stdio(false); std::cin.tie(0); int r, c, k; std::cin >> r >> c >> k; int lef = 1000000000; int rig = 1000000000; int up = 1000000000; int down = 1000000000; FOR(i, k){ int a, b; std::cin >> a >> b; lef = std::min(lef, b-1); rig = std::min(rig, c-b); up = std::min(up, a-1); down = std::min(down, r-a); } int xr = lef^rig^up^down; int turn = 0; if(xr == 0){ std::cout << "pass" << std::endl; turn = 1; } while(true){ if(turn == 1){ std::string what; std::cin >> what; if(what[0] == 'y') return 0; int x; std::cin >> x; if(what[0] == 'l') lef -= x; if(what[0] == 'r') rig -= x; if(what[0] == 't') up -= x; if(what[0] == 'b') down -= x; xr = lef^rig^up^down; }else{ if(lef > (xr^lef)){ std::cout << "left " << lef - (xr^lef) << std::endl; lef = (xr^lef); }else if(rig > (xr^rig)){ std::cout << "right " << rig - (xr^rig) << std::endl; rig = (xr^rig); }else if(up > (xr^up)){ std::cout << "top " << up - (xr^up) << std::endl; up = (xr^up); }else{ std::cout << "bottom " << down - (xr^down) << std::endl; down = (xr^down); } xr = lef^rig^up^down; assert(xr == 0); } turn = 1-turn; } return 0; }