/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class AbstractClass {
abstract class Vessel {
double contents;
abstract double capacity();
void fill(double amount) {
contents
= Math.
min(contents
+ amount, capacity
()); }
}
class Tank extends Vessel {
double length, width, height;
Tank(double length, double width, double height) {
this.length = length;
this.width = width;
this.height = height;
}
double capacity() {
return length * width * height;
}
return "tank (" + length + ", " + width + ", " + height + ")";
}
}
class Cube extends Tank {
Cube(double side) {
super(side, side, side);
}
return "cube (" + length + ")";
}
}
class Barrel extends Vessel {
double radius, height;
Barrel(double radius, double height) {
this.radius = radius;
this.height = height;
}
double capacity() {
return height
* Math.
PI * radius
* radius
; }
return "barrel (" + radius + ", " + height + ")";
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgQWJzdHJhY3RDbGFzcyB7CgogICAgYWJzdHJhY3QgY2xhc3MgVmVzc2VsIHsKICAgICAgICBkb3VibGUgY29udGVudHM7CiAgICAgICAgYWJzdHJhY3QgZG91YmxlIGNhcGFjaXR5KCk7CiAgICAgICAgdm9pZCBmaWxsKGRvdWJsZSBhbW91bnQpIHsKICAgICAgICAgICAgY29udGVudHMgPSBNYXRoLm1pbihjb250ZW50cyArIGFtb3VudCwgY2FwYWNpdHkoKSk7CiAgICAgICAgfQogICAgfQoKICAgIGNsYXNzIFRhbmsgZXh0ZW5kcyBWZXNzZWwgewoKICAgICAgICBkb3VibGUgbGVuZ3RoLCB3aWR0aCwgaGVpZ2h0OwoKICAgICAgICBUYW5rKGRvdWJsZSBsZW5ndGgsIGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCkgewogICAgICAgICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDsKICAgICAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoOwogICAgICAgICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDsKICAgICAgICB9CgogICAgICAgIGRvdWJsZSBjYXBhY2l0eSgpIHsKICAgICAgICAgICAgcmV0dXJuIGxlbmd0aCAqIHdpZHRoICogaGVpZ2h0OwogICAgICAgIH0KCiAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICAgICAgcmV0dXJuICJ0YW5rICgiICsgbGVuZ3RoICsgIiwgIiArIHdpZHRoICsgIiwgIiArIGhlaWdodCArICIpIjsKICAgICAgICB9CiAgICB9CgogICAgY2xhc3MgQ3ViZSBleHRlbmRzIFRhbmsgewoKICAgICAgICBDdWJlKGRvdWJsZSBzaWRlKSB7CiAgICAgICAgICAgIHN1cGVyKHNpZGUsIHNpZGUsIHNpZGUpOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICAgICAgcmV0dXJuICJjdWJlICgiICsgbGVuZ3RoICsgIikiOwogICAgICAgIH0KICAgIH0KCiAgICBjbGFzcyBCYXJyZWwgZXh0ZW5kcyBWZXNzZWwgewogICAgICAgIGRvdWJsZSByYWRpdXMsIGhlaWdodDsKCiAgICAgICAgQmFycmVsKGRvdWJsZSByYWRpdXMsIGRvdWJsZSBoZWlnaHQpIHsKICAgICAgICAgICAgdGhpcy5yYWRpdXMgPSByYWRpdXM7CiAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0OwogICAgICAgIH0KCiAgICAgICAgZG91YmxlIGNhcGFjaXR5KCkgewogICAgICAgICAgICByZXR1cm4gaGVpZ2h0ICogTWF0aC5QSSAqIHJhZGl1cyAqIHJhZGl1czsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CiAgICAgICAgICAgIHJldHVybiAiYmFycmVsICgiICsgcmFkaXVzICsgIiwgIiArIGhlaWdodCArICIpIjsKICAgICAgICB9CiAgICB9Cn0=