up(a32,a16).
up(a34,a17).
up(a36,a18).
up(a38,a19).
up(a40,a20).
up(a42,a21).
up(a44,a22).
up(a46,a23).
up(a48,a24).
up(a50,a25).
up(a52,a26).
up(a54,a27).
up(a56,a28).
up(a58,a29).
up(a60,a30).
up(a62,a31).

up(a16,a8).
up(a18,a9).
up(a20,a10).
up(a22,a11).
up(a24,a12).
up(a26,a13).
up(a28,a14).
up(a30,a15).

up(a8,a).
up(a10,a5).
up(a12,a6).
up(a14,a7).

up(a,a2).
up(a6,a3).

up(a2,a1).
down(a1,a3).

down(a2,a5).
down(a3,a7).

down(a,a9).
down(a5,a11).
down(a6,a13).
down(a7,a15).

down(a8,a17).
down(a9,a19).
down(a10,a21).
down(a11,a23).
down(a12,a25).
down(a13,a27).
down(a14,a29).
down(a15,a31).

down(a16,a33).
down(a17,a35).
down(a18,a37).
down(a19,a39).
down(a20,a41).
down(a21,a43).
down(a22,a45).
down(a23,a47).
down(a24,a49).
down(a25,a51).
down(a26,a53).
down(a27,a55).
down(a28,a57).
down(a29,a59).
down(a30,a61).
down(a31,a63).
flat(a2,a3).

flat(a,a5).
flat(a6,a7).

flat(a8,a9).
flat(a10,a11).
flat(a12,a13).
flat(a14,a15).

flat(a16,a17).
flat(a18,a19).
flat(a20,a21).
flat(a22,a23).
flat(a24,a25).
flat(a26,a27).
flat(a28,a29).
flat(a30,a31).

flat(a32,a33).
flat(a34,a35).
flat(a36,a37).
flat(a38,a39).
flat(a40,a41).
flat(a42,a43).
flat(a44,a45).
flat(a46,a47).
flat(a48,a49).
flat(a50,a51).
flat(a52,a53).
flat(a54,a55).
flat(a56,a57).
flat(a58,a59).
flat(a60,a61).
flat(a62,a63).

sflat(X,Y) :- flat(X,Y).
sflat(X,Y) :- flat(Y,X).

rsg(X,Y) :- sflat(X,Y).
rsg(X,Y) :- up(X,X1), rsg(Y1,X1), down(Y1,Y).

query(X) :- rsg(a,X).

