using System;
class T {
	int x;
	public int this[int a, T b] {
		get { return a+x; }
		set { x=b.x=value; }
	}
	public T(int x) { this.x = x; }
	public void print() { Console.WriteLine("{0}", x); }
	static public void Main() {
		T a = new T(1), b = new T(10);
		a.print(); b.print();
		Console.WriteLine("{0}", a[2,b]);
		a[2,b] = 20;
		a.print(); b.print();
		Console.WriteLine("{0}", a[2,b]++);
		b.print();
		a[2,b] += 5;
		a.print(); b.print();
	}
}
