
//(5*6) - (2+3) + 7 = 32

interface Component{
    int evaluate();
}

class Constant implements Component {

    private int no;

    public Constant(int number) {
        no = number;
    }

    public int evaluate(){
        return no;
    }
}

class Plus implements Component{
    private Component left_term;
    private Component right_term;

    public Plus(Component one, Component two){
        left_term =one;
        right_term = two;
    }

    public int evaluate(){
        return left_term.evaluate() + right_term.evaluate();
    }
}

class Sub implements Component{
    private Component left_term;
    private Component right_term;

    public Sub(Component one, Component two){
        left_term =one;
        right_term = two;
    }

    public int evaluate(){
        return left_term.evaluate() - right_term.evaluate();
    }
}
class Times implements Component{
    private Component left_term;
    private Component right_term;

    public Times(Component one, Component two){
        left_term =one;
        right_term = two;
    }

    public int evaluate(){
        return left_term.evaluate() * right_term.evaluate();
    }
}
class Div implements Component{
    private Component left_term;
    private Component right_term;

    public Div(Component one, Component two){
        left_term =one;
        right_term = two;
    }

    public int evaluate(){
        return left_term.evaluate() / right_term.evaluate();
    }
}

//(5*6) - (2+3) + 7 = 32
public class Presentation {

    public static void main(String args[]){
        Component seven = new Constant(7);
        Component part1 = new Times(new Constant(5), new Constant(6));
        Component part2 = new Plus(new Constant(2), new Constant(3));
        Component part3 = new Sub(part1,part2);
        Component expression = new Plus(part3,seven);
        System.out.println(expression.evaluate());
    }

}
