yoba n
= do arr
<- newArray
_ (0, n
) :: IO (IOUArray
Int Int) writeArray arr 0 0
forM_ [1..n] (\v -> readArray arr (v - 1) >>= readArray arr >>= writeArray arr v . (v -))
readArray arr n
main
= yoba
50000000 >>= print
aW1wb3J0IENvbnRyb2wuTW9uYWQKIAppbXBvcnQgRGF0YS5BcnJheS5JTwogCgp5b2JhIDo6IEludCAtPiBJTyBJbnQgIAp5b2JhIG4gPSBkbyBhcnIgPC0gbmV3QXJyYXlfICgwLCBuKSA6OiBJTyAoSU9VQXJyYXkgSW50IEludCkKICAgICAgICAgICAgd3JpdGVBcnJheSBhcnIgMCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGZvck1fIFsxLi5uXSAoXHYgLT4gcmVhZEFycmF5IGFyciAodiAtIDEpID4+PSByZWFkQXJyYXkgYXJyID4+PSB3cml0ZUFycmF5IGFyciB2IC4gKHYgLSkpCiAgICAgICAgICAgIHJlYWRBcnJheSBhcnIgbgogCm1haW4gPSB5b2JhIDUwMDAwMDAwID4+PSBwcmludA==