class X {
	public virtual int Foo () {            
		return 1;
	}
}

class Y : X {

	delegate int D();
	
	
	D GetIt () {
		return new D (base.Foo);
	}
	
	D GetIt2 () {
		return base.Foo;
	}
	
	public override int Foo () {
		return 0;
	}
	
	static int Main ()
	{
		if (new Y ().GetIt () () == 1 && new Y ().GetIt2 () () == 1) {
			System.Console.WriteLine ("good");
			return 0;
		}
		
		return 1;
	}
}