//
// Versioning, should choose Derived.Add (1)
//
using System;

class Base {
	public int val;
	
	public void Add (int x)
	{
		Console.WriteLine ("Incorrect method called");
 
		val = 1;
	}
}

class Derived : Base {
	public void Add (double x)
	{
		Console.WriteLine ("Calling the derived class with double! Excellent!");
		val = 2;
	}
}

class Demo {

	public static int Main ()
	{
		Derived d = new Derived ();

		d.Add (1);
		if (d.val == 1)
			return 1;

		if (d.val == 2)
			return 0;
		return 2;

	}
}