Disassembly Direction
Time Limit: 1 Second Memory Limit: 32768 KB
Special Judge
Disassembly is a sub-phase of Assembly Sequence Planning. When we initiate a removal from a sub-assembly, we usually start with a list of constraints between the sub-assembly to be removed and the remaining part. Those constraints typically contain some surface-pairs.
When you remove the sub-assembly away, you can only move along the direction set by the normal of the surface. The range of the possible disassembly direction is a (closed) half sphere.
When there are several such constraints, you have to satisfy all of them, or it is impossible to remove this sub-assembly.
Given a list of constraints, you are to judge weather it is possible to remove the sub-assembly. If it is possible, you will give a possible disassembly direction.
Input
Input contains multiple tests. Each tests start with a positive integer n (n < 100), the number of constraints to follow. A case with n = 0 indicates the end of input. This case is not to be processed.
The following n lines contain one vector each line, in the form of x y z. This is the normal of the surface and will not be zero.
Output
Output one line for each case. If there exists a possible disassembly direction, you can output any one, in the form of three floating numbers separated by a single space. Print "Impossible" otherwise.
Sample Input
2 0 0 1 1 0 0 6 0 0 1 0 1 0 1 0 0 -1 0 0 0 -1 0 0 0 -1 0
Sample Output
1 0 1 ImpossibleSubmit
Source: ZOJ Monthly, September 2003