using System;

class P
{
	public int A;
}

static class Program
{
	static int Extra () { return 36; }

	delegate int D ();

	static D Get (int dummy)
	{
		var p = new P { A = 6 };
		switch (dummy) {
		case 0:
			int extra = Extra ();
			return () => p.A + extra;
		case 1:
			extra = 9;
			return () => p.A * extra;
		case 2:
			return () => p.A * 2;
		}
		throw new NotSupportedException ();
	}

	static int Run (int i)
	{
		return Get (i) ();
	}

	public static int Main ()
	{
		if (Run (0) != 42)
			return 1;

		if (Run (1) != 54)
			return 2;

		if (Run (2) != 12)
			return 3;

		if (Run (1) != 54)
			return 4;

		if (Run (0) != 42)
			return 5;

		return 0;
	}
}
