fun quicksort [] = [] | quicksort (h::tl) = let val (s, b) = List.foldl (fn (x, (small, big)) => if x <= h then (x::small, big) else (small, x::big)) ([], []) tl in (quicksort s) @ [h] @ (quicksort b) end fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) fun intString n = if 0 <= n then Int.toString n else "-" ^ Int.toString (abs n) fun printList [] = ignore () | printList (h :: tl) = ( print (intString h); print "\n"; printList tl ) val () = let val a = readInt () val b = readInt () val c = readInt () val candidates = [(c + b) div a, c div a] val filtered = List.filter (fn n => (0 < n * a - b andalso n * a - b = c) orelse (n * a - b <= 0 andalso n * a = c)) candidates val ans = if filtered = [] then [~1] else quicksort filtered in printList ans end