DPoint swap(DPoint&a, DPoint&b)
{
DPoint Temp;
Temp.X = b.X;
Temp.Y = b.Y;
a.X = b.X;
a.Y = b.Y;
b.X = Temp.X;
b.Y = Temp.Y;
}
DPoint operator=(DPoint a)
{
swap(*this,a);
return *this;
}
ICAgIERQb2ludCBzd2FwKERQb2ludCZhLCBEUG9pbnQmYikKCXsKCQlEUG9pbnQgVGVtcDsKCQlUZW1wLlggPSBiLlg7CgkJVGVtcC5ZID0gYi5ZOwoJCWEuWCA9IGIuWDsKCQlhLlkgPSBiLlk7CgkJYi5YID0gVGVtcC5YOwoJCWIuWSA9IFRlbXAuWTsKCX0KCURQb2ludCBvcGVyYXRvcj0oRFBvaW50IGEpCgl7CgkJc3dhcCgqdGhpcyxhKTsKCQlyZXR1cm4gKnRoaXM7Cgl9