class A {}
class B extends A {}

class X{
	int get(A x) {return 0;}
}

class Y extends X{
	int get(A x) {return 1;}
	int get(B y) {return 2;}
}

class Overloading2
{
	public static void main(String[] args)
	{
		A a = new A();
		B b = new B();
		X x = new X();
		Y y = new Y();
		X xy = new Y();

		System.out.println(x.get(a));
		System.out.println(x.get(b));
		System.out.println(y.get(a));
		System.out.println(y.get(b));
		System.out.println(xy.get(a));
		System.out.println(xy.get(b));
	}
}