{-# LANGUAGE BangPatterns #-}
import Control
.Monad (replicateM
_) import Data.Word (Word8, Word32, Word64)
s :: Word64 -> Word32
s x = go 3 0 1 2 0 x
where
go :: Word8 -> Word32 -> Word64 -> Word64 -> Word64 -> Word64 -> Word32
go
!n
!sum !lcm1
!lcm2
!handled
!x
(!fullGroups
, !remainder
) = x `
quotRem` lcm2
!count
= itemsPerGroup
*fullGroups
+ remainder `
quot` lcm1
main = do
replicateM_ count $ do
ey0jIExBTkdVQUdFIEJhbmdQYXR0ZXJucyAjLX0KCmltcG9ydCBDb250cm9sLk1vbmFkICAocmVwbGljYXRlTV8pCmltcG9ydCBEYXRhLldvcmQgICAgICAoV29yZDgsIFdvcmQzMiwgV29yZDY0KQoKcyA6OiBXb3JkNjQgLT4gV29yZDMyCnMgeCA9IGdvIDMgMCAxIDIgMCB4CiAgd2hlcmUKICAgIGdvIDo6ICBXb3JkOCAtPiBXb3JkMzIgLT4gV29yZDY0IC0+IFdvcmQ2NCAtPiBXb3JkNjQgLT4gV29yZDY0IC0+IFdvcmQzMgogICAgZ28gIW4gIXN1bSAhbGNtMSAhbGNtMiAhaGFuZGxlZCAheAogICAgICB8IGhhbmRsZWQgPT0geCA9IHN1bQogICAgICB8IGxjbTEgPT0gbGNtMiA9IGdvIChuICsgMSkgc3VtIGxjbTEgKGxjbSBsY20yIChmcm9tSW50ZWdyYWwgbikpIGhhbmRsZWQgeAogICAgICB8IG90aGVyd2lzZSAgICA9IGxldCAhaXRlbXNQZXJHcm91cCA9IChsY20yIGBxdW90YCBsY20xKSAtIDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCFmdWxsR3JvdXBzLCAhcmVtYWluZGVyKSA9IHggYHF1b3RSZW1gIGxjbTIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIWNvdW50ID0gaXRlbXNQZXJHcm91cCpmdWxsR3JvdXBzICsgcmVtYWluZGVyIGBxdW90YCBsY20xCiAgICAgICAgICAgICAgICAgICAgICAgaW4gIGdvIChuICsgMSkgKGZyb21JbnRlZ3JhbCAoKGZyb21JbnRlZ3JhbCBzdW0gKyAoZnJvbUludGVncmFsIChuIC0gMSkpKmNvdW50KSBgcmVtYCAxMDAwMDAwMDA3KSkgbGNtMiAobGNtIGxjbTIgKGZyb21JbnRlZ3JhbCBuKSkgKGhhbmRsZWQgKyBjb3VudCkgeAoKbWFpbiA6OiBJTyAoKQptYWluID0gZG8KICBjb3VudCA8LSBmbWFwIHJlYWQgZ2V0TGluZQogIHJlcGxpY2F0ZU1fIGNvdW50ICQgZG8KICAgIHggPC0gZm1hcCByZWFkIGdldExpbmUKICAgIHByaW50IChzIHgp