// Arup Guha
// 3/7/2026
// Code for Tracing Question #7 for COP 3330 Quiz 3

class A {

	protected int x;

	public A() {
		System.out.println("def cons A");
		x = 5;
	}

	public A(int myx) {
		System.out.println("cons A int");
		x = myx;
	}

	public void f() {
		x++;
	}

	public void f(int a) {
		x+=a;
	}

	public String toString() {
		return "A "+x;
	}
}

class B extends A {

	protected int y;

	public B() {
		System.out.println("def cons B");
		y = 2;
	}

	public B(int first, int second) {
		super(second);
		y = first;
		System.out.println("cons B 2 int");
	}

	public void f(int a) {
		y+=a;
	}

	public String toString() {
		return "B "+x+" "+y;
	}
}

public class C extends B {

	private int z;

	public C() {
		System.out.println("def cons C");
		z = 4;
	}

	public C(int first) {
		super();
		z = first;
		System.out.println("cons C int");
	}

	public void f() {
		y+=2;
		z+=3;
	}

	public String toString() {
		return "C "+x+" "+y+" "+z;
	}

	public static void main(String[] args) {

		A[] items = new A[4];
		items[0] = new A();
		items[1] = new B(4, 8);
		items[2] = new C();
		items[3] = new C(7);
		for (int i=0; i<items.length; i++)
			System.out.println(items[i]);

		for (int i=0; i<items.length; i++) {
			if (i%2 == 0)
				items[i].f();
			else
				items[i].f(i+6);
		}
		for (int i=0; i<items.length; i++)
			System.out.println(items[i]);
	}
}
