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

#define DEBUG 0

char** cria_tabuleiro(int n){
  char** tab = (char**) malloc(n * sizeof(char*));
  for(int i = 0; i < n; i++){
    tab[i] = (char*) malloc(n * sizeof(char));
  }
  for(int i = 0; i < n; i++){
    for(int j = 0; j < n; j++){
      tab[i][j] = '0';
    }
  }
  return tab;
}

void imprime_tabuleiro(char** tabuleiro, int n){
  printf("y\\x|");
  for(int x = 0; x < n-1; x++) printf (" %d ", x);
  printf (" %d\n----", n-1);
  for(int x = 0; x < n-1; x++) printf ("---");
  printf ("--\n");
  
  for(int y = 0; y < n; y++){
    printf (" %d | ", y);
    for(int x = 0; x < n; x++){
      printf("%c  ", tabuleiro[x][y]);
    }
    printf("\n");  
  }
  return;
}

//devolve '0' se ninguem ganhou
//devolve '1' se '1' ganhou 
//devolve '2' se '2' ganhou
char verifica_vitoria(char **tabuleiro, int n){
  char jogador;
  int ganhou;
  //verifica colunas
  for(int x = 0; x < n; x++){
    //coloca em jogador o primeiro daquela coluna
    jogador = tabuleiro[x][0];
    if(jogador == '0') continue; //se for '0' vai para  proxima coluna
    //verifica se ganhou naquela coluna
    ganhou = 1;
    for(int y = 1; y < n; y++){
      if(tabuleiro[x][y] != jogador) ganhou = 0;
    }
    if(ganhou == 1) return jogador;
  }
  
  //verifica linhas
  for(int y = 0; y < n; y++){
    jogador = tabuleiro[0][y];
    if(jogador == '0') continue;
    ganhou = 1;
    for(int x = 1; x < n; x++){
      if(tabuleiro[x][y] != jogador) ganhou = 0;
    }
    if(ganhou == 1) return jogador;
  }

  //verificando diagonais
  jogador = tabuleiro[0][0];
  if(jogador != '0'){
    ganhou = 1;
    for(int x = 1; x < n; x++){
      if(tabuleiro[x][x] != jogador) ganhou = 0;
    }
    if(ganhou == 1) return jogador;
  }
  
  jogador = tabuleiro[0][n-1];
  if(jogador != '0'){
    ganhou = 1;
    for(int x = 1; x < n; x++){
      if(tabuleiro[x][n-1-x] != jogador) ganhou = 0;
    }
    if(ganhou == 1) return jogador;
  }
  
  return '0';
}


int main(){
  char** tabuleiro;  
  int n;
  
  //Lendo o tamanho do tabuleiro e criando
  scanf("%d", &n);
  tabuleiro = cria_tabuleiro(n);

  //Imprime tabuleiro vazio
  imprime_tabuleiro(tabuleiro, n);
  
  char jogador = '1';

  for(int i = 0; i < n*n; i++){
    int x, y;
    printf("\nCoordenadas do jogador %c: ", jogador);
    scanf("%d %d", &x, &y);
    tabuleiro[x][y] = jogador; 
    imprime_tabuleiro(tabuleiro, n);
    char resultado = verifica_vitoria(tabuleiro, n);
    if(resultado != '0'){
      printf("Jogador %c ganhou!\n", resultado);
      break;
    }
    if(jogador == '1') jogador = '2';
    else jogador = '1';
  }
  
  char resultado = verifica_vitoria(tabuleiro, n);
  if(resultado == '0'){
    printf("Empate!\n");
  }
    
  return 0;
}