Triangle Partition

Time Limit : 8 sec, Memory Limit : 65536 KB

Now judge is temporally not available for this problem. We are earnestly making necessary data. Sorry for the inconvenience.

Problem F: Triangle Partition

Suppose that a triangle and a number of points inside the triangle are given. Your job is to find a partition of the triangle so that the set of the given points are divided into three subsets of equal size.

Let A, B and C denote the vertices of the triangle. There are n points, P1, P2, ... , Pn, given inside ∆ABC. You are requested to find a point Q such that each of the three triangles ∆QBC, ∆QCA and ∆QAB contains at least n/3 points. Points on the boundary line are counted in both triangles. For example, a point on the line QA is counted in ∆QCA and also in ∆QAB. If Q coincides a point, the point is counted in all three triangles.

It can be proved that there always exists a point Q satisfying the above condition. The problem will be easily understood from the figure below.


The input consists of multiple data sets, each representing a set of points. A data set is given in the following format.

x1 y1
x2 y2
xn yn

The first integer n is the number of points, such that 3 ≤ n ≤ 300. n is always a multiple of 3. The coordinate of a point Pi is given by (xi, yi). xi and yi are integers between 0 and 1000.

The coordinates of the triangle ABC are fixed. They are A(0, 0), B(1000, 0) and C(0, 1000).

Each of Pi is located strictly inside the triangle ABC, not on the side BC, CA nor AB. No two points can be connected by a straight line running through one of the vertices of the triangle. Speaking more precisely, if you connect a point Pi with the vertex A by a straight line, another point Pj never appears on the line. The same holds for B and C.

The end of the input is indicated by a 0 as the value of n. The number of data sets does not exceed 10.


For each data set, your program should output the coordinate of the point Q. The format of the output is as follows.

qx qy

For each data set, a line of this format should be given. No extra lines are allowed. On the contrary, any number of space characters may be inserted before qx, between qx and qy or after qy.

Each of qx and qy should be represented by a fractional number (e.g., 3.1416) but not with an exponential part (e.g., 6.023e+23 is not allowed). Four digits should follow the decimal point.

Note that there is no unique "correct answer" in this problem. In general, there are infinitely many points which satisfy the given condition. Your result may be any one of these "possible answers".

In your program you should be careful to minimize the effect of numeric errors in the handling of floating-point numbers. However, it seems inevitable that some rounding errors exist in the output. We expect that there is an error of 0.5 × 10-4 in the output, and will judge your result accordingly.

Sample Input

100 500
200 500
300 500
100 300
100 600
200 100
200 700
500 100
600 300

Output for the Sample Input

166.6667 555.5556
333.3333 333.3333

As mentioned above, the results shown here are not the only solutions. Many other coordinates for the point Q are also acceptable. The title of this section should really be "Sample Output for the Sample Input".

Source: ACM International Collegiate Programming Contest , Asia Regional Tokyo, Tokyo, Japan, 1998-11-23