struct Point {
	x int
	y int
}

main() {
	a := new(Point)
	assert a.x == 0
	assert a.y == 0
	assert a.x == a.y

	a.x = 1
	a.y = 2
	assert a.x == 1
	assert a.y == 2
	assert a.x != a.y

	a.x = a.y
	assert a.x == 2
	assert a.y == 2
	assert a.x == a.y

	a.x = a.y + 1
	assert a.x == 3
	assert a.y == 2
	assert a.x != a.y

	a.y += 1
	assert a.x == 3
	assert a.y == 3
	assert a.x == a.y

	b := new(Point)
	assert b.x == 0
	assert b.y == 0

	b.x = -3
	b.y = -3
	assert b.x == -3
	assert b.y == -3

	c := new(Point)
	assert c.x == 0
	assert c.y == 0

	c.x = a.x + b.x
	c.y = a.y + b.y
	assert c.x == a.x + b.x
	assert c.y == a.y + b.y
	assert c.x == 0
	assert c.y == 0

	delete(a)
	delete(b)
	delete(c)
}