import java.io.*;
import java.net.*;


public class server {
	
	private static int player1_port = 9999;
	private static int player2_port = 9998;
	
	private static int player1_x = 0;
	private static int player1_y = 0;
	private static int player2_x = 0;
	private static int player2_y = 0;
	
	// Message terminator
	private static char EOF = (char)0x00;
	
	private static class player1Loop implements Runnable {
		
		private BufferedReader data_in;
		private PrintWriter data_out;
		
		player1Loop(BufferedReader data_in, PrintWriter data_out) {
			this.data_in = data_in;
			this.data_out = data_out;
		}
		
        public void run() {
			
			try {
				boolean quit = false;
				
				// Waits for the EXIT command
				while (!quit) {
					
					// Get Player 1 position
					String msg = data_in.readLine();
					
					if (msg == null) quit = true;
					
					if (!msg.trim().equals("EXIT")) {
						
						String [] position = msg.trim().split(",");
						
						player1_x = Integer.parseInt(position[0]);
						player1_y = Integer.parseInt(position[1]);
						
						data_out.println(player2_x+","+player2_y+EOF);
						data_out.flush();
						
					} else {
						quit = true;
					}
					
				}
			} catch (Exception e) {
				System.out.println("Connection lost");
			}
        }
    }
	
	private static class player2Loop implements Runnable {
		
		private BufferedReader data_in;
		private PrintWriter data_out;
		
		player2Loop(BufferedReader data_in, PrintWriter data_out) {
			this.data_in = data_in;
			this.data_out = data_out;
		}
		
        public void run() {
			
			try {
				boolean quit = false;
				
				// Waits for the EXIT command
				while (!quit) {
					
					// Get Player 2 position
					String msg = data_in.readLine();
					
					if (msg == null) quit = true;
					
					if (!msg.trim().equals("EXIT")) {
						
						String [] position = msg.trim().split(",");
						
						player2_x = Integer.parseInt(position[0]);
						player2_y = Integer.parseInt(position[1]);
						
						data_out.println(player1_x+","+player1_y+EOF);
						data_out.flush();
						
					} else {
						quit = true;
					}
					
				}
			} catch (Exception e) {
				System.out.println("Connection lost");
			}
        }
    }
	
	public static void main(String args[]) {
		
		try {
			// create a serverSocket connection
			ServerSocket s1 = new ServerSocket(player1_port);
			ServerSocket s2 = new ServerSocket(player2_port);
			
			// wait for incoming connections
			Socket incoming1 = s1.accept();
			Socket incoming2 = s2.accept();
			
			BufferedReader data_in1 = new BufferedReader(new InputStreamReader(incoming1.getInputStream()));
			BufferedReader data_in2 = new BufferedReader(new InputStreamReader(incoming2.getInputStream()));
			PrintWriter data_out1 = new PrintWriter(incoming1.getOutputStream());
			PrintWriter data_out2 = new PrintWriter(incoming2.getOutputStream());
			
			Thread player1Loop = new Thread(new player1Loop(data_in1, data_out1));
			player1Loop.start();
			
			Thread player2Loop = new Thread(new player2Loop(data_in2, data_out2));
			player2Loop.start();
		
		} catch (Exception e) {
			System.out.println("Connection lost");
		}
		
	}
}
