import Data.List (permutations)
magicSquare
= head . filter condition
. map setTri
. permutations
. map (2^) $ [0..8] where
setTri [] = []
setTri (a:b:c:xs) = [[a, b, c]] ++ setTri xs
condition xs = line xs && row xs && diagonal xs
where
line (x:[]) = True
row ((x:[]):(y:[]):(z:[]):_) = True
aW1wb3J0IERhdGEuTGlzdCAocGVybXV0YXRpb25zKQoKbWFnaWNTcXVhcmUgPSBoZWFkIC4gZmlsdGVyIGNvbmRpdGlvbiAuIG1hcCBzZXRUcmkgLiBwZXJtdXRhdGlvbnMgLiBtYXAgKDJeKSAkIFswLi44XQogIHdoZXJlCiAgc2V0VHJpIFtdID0gW10KICBzZXRUcmkgKGE6YjpjOnhzKSA9IFtbYSwgYiwgY11dICsrIHNldFRyaSB4cwoKICBjb25kaXRpb24geHMgPSBsaW5lIHhzICYmIHJvdyB4cyAmJiBkaWFnb25hbCB4cwogICAgd2hlcmUKICAgIGxpbmUgKHg6W10pID0gVHJ1ZQogICAgbGluZSAoeDp4cykgPSAocHJvZHVjdCB4KSA9PSAocHJvZHVjdCAuIGhlYWQgJCB4cykgJiYgKGxpbmUgeHMpCgogICAgcm93ICgoeDpbXSk6KHk6W10pOih6OltdKTpfKSA9IFRydWUKICAgIHJvdyAoeDp5Ono6XykgPSAocHJvZHVjdCAuIG1hcCBoZWFkICQgW3gsIHksIHpdKSA9PSAocHJvZHVjdCAuIG1hcCBtaWRkbGUgJCBbeCwgeSwgel0pICYmIChyb3cgLiBtYXAgdGFpbCAkIFt4LCB5LCB6XSkKCiAgICBkaWFnb25hbCAoYTpiOmM6XykgPSBwcm9kdWN0IFtoZWFkIGEsIG1pZGRsZSBiLCBsYXN0IGNdID09IHByb2R1Y3QgW2xhc3QgYSwgbWlkZGxlIGIsIGhlYWQgY10KCiAgICBtaWRkbGUgPSBoZWFkIC4gdGFpbAoKCm1haW4gPSBtYXBNXyBwcmludCBtYWdpY1NxdWFyZQ==