import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.*;
import java.io.IOException;

public class tcp {
    public static class EchoMultiServer {
        private ServerSocket serverSocket;

        public void start(int port) throws IOException {
            serverSocket = new ServerSocket(port);
            while (true) {
                new EchoClientHandler(serverSocket.accept()).start();
            }
        }

        public void stop() throws IOException {
            serverSocket.close();
        }

        private static class EchoClientHandler extends Thread {
            private Socket clientSocket;
            private PrintWriter out;
            private BufferedReader in;

            public EchoClientHandler(Socket socket) throws IOException {
                this.clientSocket = socket;
            }

            public void run() {
                try {
                    out = new PrintWriter(clientSocket.getOutputStream(), true);
                    in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                    String inputLine;
                    while ((inputLine = in.readLine()) != null) {
                        if (".".equals(inputLine)) {
                            out.println("bye");
                            break;
                        }
                        out.println(inputLine);
                        System.out.println(inputLine);
                    }

                    in.close();
                    out.close();
                    clientSocket.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }

    public static void main(String[] args) throws IOException {
        EchoMultiServer server = new EchoMultiServer();
        server.start(25565);
    }
}