using System;

public class X
{
	public delegate void TestDelegate ();

	static long sum_i, sum_k, sum_p;

	public static int Test (int p)
	{
		TestDelegate d = null;
		for (int i = 1; i <= 5; i++) {
			int k = i;
			TestDelegate temp = delegate {
				Console.WriteLine ("i = {0}, k = {1}, p = {2}", i, k, p);
				sum_i += 1 << i;
				sum_k += 1 << k;
				sum_p += 1 << p;
				p += k;
			};
			temp ();
			d += temp;
		}
		Console.WriteLine ("SUM i = {0}, k = {1}, p = {2}", sum_i, sum_k, sum_p);
		Console.WriteLine ();
		if (sum_i != 62)
			return 1;
		if (sum_k != 62)
			return 2;
		if (sum_p != 35168)
			return 3;
		sum_i = sum_k = sum_p = 0;
		d();
		Console.WriteLine ("SUM i = {0}, k = {1}, p = {2}", sum_i, sum_k, sum_p);
		Console.WriteLine ();
		if (sum_i != 320)
			return 4;
		if (sum_k != 62)
			return 5;
		if (sum_p != 1152385024)
			return 6;
		return 0;
	}

	public static int Main ()
	{
		int result = Test (5);
		if (result != 0)
			Console.WriteLine ("ERROR: {0}", result);
		else
			Console.WriteLine ("OK");
		return result;
	}
}