using System;

class Factory
{
	public class S<G1, G2>
	{
	}
	
	public static S<F1, F2> Create<F1, F2> (F1 f1, F2 f2)
	{
		return null;
	}
}

class A
{
	static TR Test<T1, T2, TR>(T1 t1, T2 t2, Func<T1, T2, TR> f)
	{
		return f (t1, t2);
	}
	
	public static void Main ()
	{
		var r = Test ("a", "b", Factory.Create);
	}
}