ACSL Practice 2009

Task 7: Cube

Folding six squares connected in some special ways can form a cube. For example, in the diagram below, the six squares on the left can be folded into a cube (with face 1 opposite face 4, face 2 opposite face 6, and face 3 opposite face 5) but the six squares on the right cannot be folded into a cube (faces 3 and 5 overlap). 

A 6 × 6 array is used to represent the six squares. Only 6 of the 36 cells are used to represent the 6 squares. A cell representing a square contains the number for the square. Other cells contain the number 0. Note that the same 6 squares can be represented in many ways. For example, the invalid six squares of the above example can be represented as follows (the one on the right is obtained after a 90 degree rotation of the one on the left):

                0 0 0 0 0 0         0 0 0 0 0 0
                0 3 0 5 0 0         0 0 0 0 0 0
                1 2 4 6 0 0         0 0 0 0 5 6
                0 0 0 0 0 0         0 0 0 0 0 4
                0 0 0 0 0 0         0 0 0 0 3 2
                0 0 0 0 0 0         0 0 0 0 0 1 

Given a square representation, determine if the squares can be folded into a cube; if so, find the face opposite face 1.

Input

The input consists of six lines with each line containing six integers. All but six of the input integers are zeros. The non-zero integers are 1, 2, 3, 4, 5, 6. 

Output

The output file consists of a single integer. The integer is 0 if the squares cannot be folded into a cube; otherwise, the integer is the number of the face opposite face 1. 

Sample Input

0 0 0 0 0 0
0 0 0 0 0 0
0 0 1 0 0 0
0 5 2 3 0 0
0 0 4 0 0 0
0 0 6 0 0 0

Sample Output

4

Diagram

All Submissions
Best Solutions


Point Value: 20
Time Limit: 2.00s
Memory Limit: 16M
Added: May 19, 2009

Languages Allowed:
C++03, PAS, C, HASK, ASM, RUBY, PYTH2, JAVA, PHP, SCM, CAML, PERL, C#, C++11, PYTH3