import Data.Word
import Data.Array.Unboxed
crack n = helper n 0 0
where helper 0 _ acc
| acc == f acc = [acc]
helper k n acc
= concat [ helper
(k
-1) c
(acc
+ ps
!c
) | c
<- [n
..9]] ps
= listArray
(0,9) (map (^13) [0..9]) :: UArray
Int Word64
f 0 = 0
aW1wb3J0IERhdGEuV29yZAppbXBvcnQgRGF0YS5BcnJheS5VbmJveGVkCgpjcmFjayA6OiBJbnQgLT4gW1dvcmQ2NF0KY3JhY2sgbiA9IGhlbHBlciBuIDAgMAogIHdoZXJlIGhlbHBlciAwIF8gYWNjCiAgICAgICAgICB8IGFjYyA9PSBmIGFjYyA9IFthY2NdCiAgICAgICAgICB8IG90aGVyd2lzZSAgICA9IFtdCiAgICAgICAgaGVscGVyIGsgbiBhY2MgPSBjb25jYXQgWyBoZWxwZXIgKGstMSkgYyAoYWNjICsgcHMhYykgfCBjIDwtIFtuLi45XV0KICAgICAgICBwcyA9IGxpc3RBcnJheSAoMCw5KSAobWFwICheMTMpIFswLi45XSkgOjogVUFycmF5IEludCBXb3JkNjQKICAgICAgICBmIDAgPSAwCiAgICAgICAgZiBhID0gKHBzICEgZnJvbUludGVncmFsIChhYG1vZGAxMCkpICsgZiAoYWBkaXZgMTApCgptYWluID0gbWFwTV8gcHJpbnQgKGNyYWNrIDE1KQ==