import Data.Int (Int64) -- | Generates the sequence of prime numbers by another method. -- Based on . primes2 :: [Int64] primes2 = map fromIntegral primes2' where primes2' = [2, 3, 5] ++ sieve2 5 7 (drop 2 primes2') sieve2 m s (p : ps) = [n | n <- ns, gcd m n == 1] ++ sieve2 (m * p) (p * p) ps where ns = [x + y | x <- [s, s + 6 .. p * p - 2], y <- [0, 4]] main :: IO () main = do n <- readLn :: IO Int64 print $ sum $ takeWhile (<= n) primes2