import java.util.LinkedList;

class Animal {
  private int weight;
  public Animal() { weight = 100; }
  public Animal(int w) { weight = w; }
  public double price() { return weight * 18.0; }
  public String toString () { return "Animal"; }
}

class Bull extends Animal {
  public Bull(int w) { super(w); }
  public double price() { return super.price() * 2.71; }
  public void grass() { System.out.println(this + " is eating grass."); }
  public String toString () { return "Bull"; }
}

class Zebu extends Bull {
  public Zebu(int w) { super(w); }
  public double price() { return super.price() * 3.14; }
  public String toString () { return "Zebu"; }
}

public class Farm {
  public static void main(String args[]) {
    // Build the farm:
    LinkedList<Animal> farmList = new LinkedList<Animal>();
    farmList.add(new Animal());
    farmList.add(new Animal(90));
    farmList.add(new Bull(110));
    farmList.add(new Zebu(130));
    // Compute the whole value of the farm:
    double price = 0.0;
    for (Animal a : farmList) {
      price += a.price();
    }
    System.out.println("The farm is worth R$ " + price);
    // Get the grassing animals:
    LinkedList<Bull> cattle = new LinkedList<Bull>();
    for (Animal a : farmList) {
      if (a instanceof Bull) {
        cattle.add((Bull)a);
      }
    }
    // Feed all the bulls:
    for (Bull b : cattle) {
      b.grass();
    }
  }
}
