public class Solution { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String grandFatherName = reader.readLine(); Cat grandFather = new Cat(grandFatherName); String grandMotherName = reader.readLine(); Cat grandMother = new Cat(grandMotherName); String fatherName = reader.readLine(); Cat catFather = new Cat(fatherName, null, grandFather); String motherName = reader.readLine(); Cat catMother = new Cat(motherName, grandMother, null); String sonName = reader.readLine(); Cat catSon = new Cat(sonName, catMother, catFather); String daughterName = reader.readLine(); Cat catDaughter = new Cat(daughterName, catMother, catFather); System.out.println(grandFather); System.out.println(grandMother); System.out.println(fatherName); System.out.println(catMother); System.out.println(catSon); System.out.println(catDaughter); } public static class Cat { private String name; private Cat father; private Cat mother; Cat(String name) { this.name = name; } Cat(String name, Cat mother, Cat father) { this.name = name; this.mother = mother; this.father = father; } @Override public String toString() { if ((mother == null) && (father == null)) { return "The cat's name is " + name + ", no mother, no father "; } else if (mother == null){ return "The cat's name is " + name + ", no mother, " + father.name + " is the father";} else if (father == null){ return "The cat's name is " + name + ", no father, " + mother.name + " is the mother";} else return "The cat's name is " + name + " " + mother.name + " is the mother, " + father.name + " is the father"; } } }