Un poliomino este o figură geometrică conexă formată din pătrate de arie 1 cu vârfurile în puncte de coordonate întregi. Evident, pătratele au laturile paralele cu axele de coordonate. Două pătrate se numesc adiacente dacă au o latură comună. O figură este conexă dacă din orice pătrat al figurii se poate ajunge în orice alt pătrat, trecând printr-o succesiune de pătrate în care oricare două pătrate consecutive sunt adiacente.
Două poliominouri sunt considerate identice dacă unul poate fi obţinut din celălalt printr-o translaţie.
O latură orizontală a unui poliomino este formată dintr-o succesiune de pătrate de arie 1 ale poliominoului, astfel încât oricare două pătrate consecutive au o latură verticală comună.
Un poliomino este orizontal-convex dacă orice linie orizontală (dreapta paralelă cu axa Ox) intersectează o singură latură orizontală a poliominoului sau niciuna.
De exemplu, poliominoul din Figura 1 este orizontal convex, dar poliominoul din figura 2 nu este orizontal convex.
Cerinţă
Scrieţi un program care să determine numărul de poliominouri orizontal convexe de arie n.
Date de intrare
Fişierul de intrare poli.in conţine o singură linie pe care se află un număr natural nenul n.
Date de ieşire
Fişierul de ieşire poli.outconţine o singură linie pe care se află numărul de poliominouri orizontal convexe de arie n.