class Shape {

Shape(){
    super(());
  }
  Shape(){
    super(());
  }

}class Circle {

Circle(){
    super(());
  }
  Circle(){
    super(());
  }

}class Rectangle {

Rectangle(){
    super(());
  }
  Rectangle(){
    super(());
  }

}class TransparentRectangle {

TransparentRectangle(){
    super(());
  }
  TransparentRectangle(){
    super(());
  }

}class FilledRectangle {

FilledRectangle(){
    super(());
  }
  FilledRectangle(){
    super(());
  }

}class Square {

Square(){
    super(());
  }
  Square(){
    super(());
  }

}class WeirdShape {

WeirdShape(){
    super(());
  }
  WeirdShape(){
    super(());
  }

}class Expr {

}class ConstantExpr {

  java.lang.Integer i;
ConstantExpr(java.lang.Integer i){
    super(());
    this.i = i;
  }
  java.lang.Integer i(){
    return this.i;
  }

  ConstantExpr(java.lang.Integer i){
    super(());
    this.i = i;
  }

}class PlusExpr {

  Expr a;
  Expr b;
PlusExpr(Expr a, Expr b){
    super(());
    this.a = a;
    this.b = b;
  }
  Expr a(){
    return this.a;
  }

  Expr b(){
    return this.b;
  }

  PlusExpr(Expr a, Expr b){
    super(());
    this.a = a;
    this.b = b;
  }

}class TimesExpr {

  Expr a;
  Expr b;
TimesExpr(Expr a, Expr b){
    super(());
    this.a = a;
    this.b = b;
  }
  Expr a(){
    return this.a;
  }

  Expr b(){
    return this.b;
  }

  TimesExpr(Expr a, Expr b){
    super(());
    this.a = a;
    this.b = b;
  }

}class NegExpr {

  Expr e;
NegExpr(Expr e){
    super(());
    this.e = e;
  }
  Expr e(){
    return this.e;
  }

  NegExpr(Expr e){
    super(());
    this.e = e;
  }

}