using System;

public interface IList<R>
{
	int Map<S> (S item);
}

public class List<T> : IList<T>
{
	public int Map<U> (U item)
	{
		return 1;
	}
}

public class SpecialList<V> : IList<V>
{
	public int Map<W> (W item)
	{
		return 2;
	}
}

class X
{
	public static int Main ()
	{
		IList<int> list = new List<int> ();
		int result = list.Map ("Hello");
		if (result != 1)
			return 1;

		IList<int> list2 = new SpecialList<int> ();
		int result2 = list2.Map ("World");
		if (result2 != 2)
			return 2;

		return 0;
	}
}