open System let factorize n = let split p n = let mutable n = n let mutable k = 0 while n % p = 0L do k <- k + 1 n <- n / p (n, k) [ let m = ref n let p = ref 2L while (! p) * (! p) <= n do let (m', k) = split (! p) (! m) if k > 0 then yield (! p, k) p := (! p) + 1L m := m' // In case n is prime if (! m) = n then yield (n, 1) ] let solve n = factorize n |> List.choose (fun (k, v) -> if v % 2 <> 0 then Some k else None) |> List.fold (*) 1L [] let main _ = let x = Console.ReadLine() |> int64 printfn "%d" (solve x) //exit code 0