using System;

public delegate TResult Func<TArg0, TResult> (TArg0 arg0);

class Demo
{
	static Y F<X, Y> (int a, X value, Func<X, Y> f1)
	{
		return f1 (value);
	}
	public static int Main ()
	{
		object o = F (1, "1:15:30", s => TimeSpan.Parse (s));
		Console.WriteLine (o);
		return 0;
	}
}