import java.io.*; import java.util.*; class Patient implements Comparable { private String name; private String problem; private int number; private int priority; public Patient(String name, String problem, int number, int priority) { this.name = name; this.problem = problem; this.number = number; this.priority = priority; } public String toString() { return "name: " + name + ", problem: " + problem + ", number: " + number + ", priority: " + priority; } public int compareTo(Object rhs) { Patient p = (Patient)rhs; if (priority == p.priority) return number - p.number; else return p.priority - priority; } } class Demo { static SortedSet queue = new TreeSet(); static void arrive(Patient patient) { queue.add(patient); } static Patient treat() { if (queue.isEmpty()) { return null; } else { Patient patient = (Patient)queue.first(); queue.remove(patient); return patient; } } /* arrive Jim sunburn 10 arrive Ann brokenwrist 50 arrive John heartattack 100 arrive Sue headache 10 treat */ public static void main(String[] args) { int number = 1; for (;;) { String line = readLine(); StringTokenizer tok = new StringTokenizer(line); String verb = tok.nextToken(); if (verb.equals("arrive") || verb.equals("a")) { String name = tok.nextToken(); String problem = tok.nextToken(); int priority = Integer.parseInt(tok.nextToken()); Patient patient = new Patient(name, problem, number, priority); number++; arrive(patient); } else if (verb.equals("treat") || verb.equals("t")) { Patient patient = treat(); if (patient == null) { System.out.println("No patients, take a break"); } else { System.out.println("treating patient " + patient); } } else if (verb.equals("exit") || verb.equals("e")) { break; } } } static String readLine() { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("\n? "); String line = null; try { line = in.readLine(); } catch (IOException e) { } return line; } }