A wirrel piece looks like this:


                           +---+---+---+---+---+
                           | 1 | 2 | 3 | 4 | 5 |
                           |   |   |   |   |   |
                           +---+---+---+---+---+
                           |16 |           | 6 |
                           |   |           |   |
                           +---+           +---+
                           |15 |           | 7 |
                           |   |           |   |
                           +---+           +---+
                           |14 |           | 8 |
                           |   |           |   |
                           +---+---+---+---+---+
                           |13 |12 |11 |10 | 9 |
                           |   |   |   |   |   |
                           +---+---+---+---+---+

The syntax of the 'makefile' is as follows:

Every piece in the cube starts with

    x:

with 'x' being a positive number.

For example:

    1:

What follows are lines starting with a letter and a colon and some numbers
with the following syntax:

    c: x1.y1 [ - xn.yn ]

where:

    c is a single character from the set { S,C,D,T,O,Q }, and
    xn, yn are positive integers.
    [] means repetition.

For example:

    S: 1.5 - 2.1

When there are no lines, the piece always fits immediately.

These are the letters and numbers one can use. x, y, z, u and v must have this
form: [n].[n], for example: 5.1, or 10.6, or 16.2.

    S: x - y

    'Simple fit': bit x and bit y must fit.


    C: x - y - z
    
    'Corner fit': bit x, y and z must have a total sum of 1. This is used for
    corners where three bits come together.

    D: x - y

    'Double fit': Two bits come together and should not both be 1. Usually this
    is a preparation to a 'Quad fit' where four bits come together in one
    point.


    T: x - y - z - u - v

    'Triple fit': The most complicated one: the sum of bit x, y and z may not
    be higher than 1. This is usually used as a preparation for a 'Quad Fit'
    where four bits come together in one point. There is one problem though:
    there might be a risk of trapping an empty bit when doing a Triple fit. u
    and v are the bits that could, together, trap this hole. The program will 
    make sure that - if there is a hole - not both u and v are 1.


    O: x - y - u - v

    'Open fit': Similar to 'Triple fit'. The sum of bit x and y should be 0 or
    1, but if their sum is 0, the hole may not be closed in by u and v.


    Q: x - y - z - u

    'Quad Fit': The sum of bit x, y, z, and u must be 1.


---

The syntax of a description file is as follows

    <name> abcdefghijklmnop

where:

    <name> is a string without whitespace. Maximum of 32 characters.
    a-p 16 integers where each integer is 0 or 1.


---


When finished the program will generate this kind of output

n - xyz: m.
.
.
.

n is the position in the cube that you specified with the make file, xyz is the
name of the piece and m is its position. There are eight ways to look at a
piece:

Name in the front, upright: 1.
Turn right: 2.
Turn right: 3.
Turn right: 4.
Flip over: 5. (bottom to top)
Turn right: 6.
Turn right: 7.
Turn right: 8.
