using System;

interface IA
{
	int Foo { get; }
}

interface IB_1 : IA
{
	new string Foo { get; }
}

interface IB_2 : IA
{
	new char Foo { get; }
}

interface IC : IB_2, IB_1
{
	new byte Foo { get; }
}

class A : IA
{
	public int Foo { get { return 3; } }
}

class B : A, IB_1
{
	public new string Foo { get { return "1"; } }
}

class C : B, IC
{
	char IB_2.Foo { get { return 'a'; } }
	
	public new byte Foo { get { return 2; } }
	
	public static void Main ()
	{
		new C ();
	}
}