// Przykładowy program grający w okręty
// Autor: Arkadiusz Paterek <paterek@mimuw.edu.pl>

#include <cassert>
#include <cstdio>
#include <cstdlib>

#define FOR(i, n) for (int i = 0; i < (n); ++i)

#define BUF_SIZE 1024

void getMessage(char *buf, int buf_size) {
	int res = scanf(" \(%[^)])", buf);
	fprintf(stderr, "%d \"%s\"\n", res, buf);
}

void sendMessage(char *buf) {
	printf("%s\n", buf);
	fflush(stdout);
}

void getStart(int &round_number, int &player, bool &end_of_match) {
	char buf[BUF_SIZE];	
	getMessage(buf, BUF_SIZE);

	int l, k;
	if (buf[0] == 'K' || buf[0] == 'W') {
		end_of_match = true;
		return;
	} else if (sscanf(buf, "%d,%d", &l, &k) == 2) {
		round_number = l;
		player = k;
		return;
	}
	assert(0);
}

void sendBoard() {
	sendMessage("(a1,a2,a3,a4,a6,a7,a8,c1,c2,c3,e7,e8,c7,c8,e1,e2,e5,h1,h3,h5)");
}

int getMove(bool &end_of_game) {
	char buf[BUF_SIZE];	
	getMessage(buf, BUF_SIZE);
	if (buf[0] == 'W')
		end_of_game = true;
	return buf[0];
}

void sendMove() {
	char buf[BUF_SIZE];
	int x = rand() & 7;
	int y = rand() & 7;
	sprintf(buf, "(%c%c)", 'a' + x, '1' + y);
	sendMessage(buf);
}

int getResult(bool &end_of_game) {
	char buf[BUF_SIZE];	
	getMessage(buf, BUF_SIZE);
	if (buf[0] == 'W')
		end_of_game = true;
	return buf[0];
}

void getBoard() {
	char buf[BUF_SIZE];	
	getMessage(buf, BUF_SIZE);
}

int main(int argc, char *argv[]) {
	if (argc != 3) {
		fprintf(stderr, "Usage: ./player rounds time\n");
		return -1;
	}
	
	int rounds;
	sscanf(argv[1], "%d", &rounds);
	
	bool end_of_match = false;
	FOR(i, rounds) {
		int round_number;
		int player;
		getStart(round_number, player, end_of_match);
		if (end_of_match)
			break;
		assert(i + 1 == round_number);
		
		sendBoard();
		
		bool end_of_game = false;
		int result = 'N';
		if (player == 1) {
			do {
				sendMove();
				result = getResult(end_of_game);
			} while (result != 'N' && result != 'W');
		}
		
		while (!end_of_game) {
			do {
				result = getMove(end_of_game);
			} while (result != 'N' && result != 'W');
			if (end_of_game)
				break;
				
			result = 'N';
			do {
				sendMove();
				result = getResult(end_of_game);
			} while (result != 'N' && result != 'W');
		}
		
		getBoard();
	}
}
