class Person implements Comparable {
	Person(int id, int age, Name name) {
		this.id = id;
		this.age = age;
		this.name = name;
	}
	Person(int age, Name name) {
		this.age = age;
		this.name = name;
	}

	interface Comparator {
		int compare(Person p1, Person p2);
	}
	static class ByAge implements Comparator {
		public int compare(Person p1, Person p2) {return Integer.compare(p1.age, p2.age);}
	}
	static class ByName implements Comparator {
		public int compare(Person p1, Person p2) {return p1.name.compareTo(p2.name);}
	}

	public int compareTo(Comparable otherComparable) {return Integer.compare(this.id, ((Person)otherComparable).id);}

	public String toString() {return "#" + id + " " + name + " (" + age + ")";}

	private int id;
	private int age;
	private Name name;
}
