main = readLn >>= print . xsum xsum :: Integer -> Integer xsum n = foldr dsum 0 [1 .. floor (sqrt (fromIntegral d))] where dsum x acc = let (q,r) = divMod d x in if r/=0 then acc else if x==q then acc+x else acc+x+q d = gcd n (div (n*(n-1)) 2)