Zadanie 7 (termin oddania 9.02, 18:30, 4 pkt.)
----------------------------------------------

W pliku kostki: file of array[1..n,1..n] of 0..1 znajdują
się opisy kostek układanki. Wartość 1 oznacza, że odpowiednie
pole jest elementem kostki, 0 że nie. Np. dla n = 4 jedna
z kostek mogłaby mieć postać:

 0 1 0 0
 1 1 1 0
 0 1 0 0
 0 0 0 0

W pliku figura: file of array[1..m,1..m] of integer znajduje się zestaw
układanek do ułożenia. Każda układanka ma postać analogiczną jak
kostka (tyle że m jest zapewne większe od n). Zagadkę daje się
rozwiązać wtedy i tylko wtedy, gdy da się tak ułożyć _wszystkie_
kostki układanki, każdą dokładnie raz, żeby wszystkie jedynki 
kostek znajdowały się na polach układanki z wartością 1 i na każde
pole układanki z wartością 1 była położona dokładnie jedna część kostki
z jedynką. Z powyższego wynika, że aby udało się ułożyć
układankę liczba jedynek we wszystkich kostkach musi być
równa liczbie jedynek w układance. Wynika stąd również, że
kostka n*n może wystawać poza układankę, ale tylko częścią
nie zawierającą jedynek.

Uwaga: kostki można obracać, ale nie można ich odwracać na drugą
stronę.

Można założyć, że liczba kostek jest nie większa niż stała
MaxLKostek=20, stała n wynosi 4, zaś stała m=10.

Napisz program, który wywołany z dwoma parametrami: nazwą pliku
z kostkami i nazwą pliku z układankami wypisze na standardowe wyjście
dla każdej układanki w osobnym wierszu liczbę sposobów jej ułożenia
(nie uwzględniając symetrii, tzn. np. nie przejmujemy się tym,
że pokazaną powyżej kostkę można położyć ze względu na obroty
na 4 sposoby, które są ze sobą identyczne, nie przejmujemy się
również tym, że sama układanka może mieć osie symetrii).

Błędne sytuacje (np. brak plików z danymi) należy zasygnalizować
stosownym komunikatem wypisanym na standardowe wyjście a potem
należy wywołać procedurę halt.