import qualified Data.Map as Map import Data.List f::Int->Int->[Int] f 1 _=[] f 2 _=[2] f 3 _=[3] f n d |n `mod` d==0=d:f (n `div` d) d |otherwise=f n (d+1) h::[Int]->Map.Map Int Int ->[Int]->Int h [] _ ds=sum (nub ds) h (x:xs) ms ds |(Map.member x ms)==True=let Just y=Map.lookup x ms in h xs ms (y:ds) |otherwise=h xs ms ds f2::Int->[Int]->Map.Map Int Int->Map.Map Int Int f2 _ [] ms=ms f2 n (x:xs) ms=let ms2=Map.insert x n ms in f2 n xs ms2 g::Int->Int->Map.Map Int Int->Int g n m ms |n>m=sum (nub (Map.elems ms)) g n m ms=let xs=f n 2 t=h xs ms [0] ms2=f2 n xs ms in if t>n then g (n+1) m ms else g (n+1) m ms2 main = do e<-getLine let n=read e::Int print $ g 2 n (Map.fromList [(0::Int,0::Int)])