using System;

public abstract class A
{
        public abstract T Foo<T> ();
}

public abstract class B : A
{
        public override T Foo<T> ()
        {
                return default (T);
        }
}

public class C : B
{
	public static void Main ()
	{ }
}