using System;
public delegate void E(object sender, string msg);
interface I {
	event E a;
}
class T: I {
	E _x;
	event E I.a {
		add { _x += value; }
		remove { _x -= value; }
	}
	public static event E y;
	public void fire(string s) {
		_x("x", s);
		y("y", s);
	}
	public void F(E handler) {
		((I)this).a += handler;
		y += handler;
	}
}
class U {
	static public void handler(object sender, string msg) {
		Console.WriteLine("{0}: {1}", sender, msg);
	}
	static public void Main() {
		T t = new T();
		((I)t).a += new E(handler);
		t.F(new E(handler));
		t.fire("fire!");
	}
}
