fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) fun printAns [] = ignore () | printAns (h::tl) = let val hReal = Real.fromInt h val area = 3.0 * hReal * hReal * (Math.sqrt 3.0) / 4.0 in ( print (Real.toString area ^ "\n"); printAns tl ) end fun findAns low high m acc = if low = high then Int.max(low mod m, acc) else ( let val nextLow = low + 1 val nextAcc = Int.max(low mod m, acc) in findAns nextLow high m nextAcc end ) val () = let val a = readInt () val b = readInt () val c = readInt () val d = readInt () val m = readInt () val ans = if m <= (b + d) - (a + c) + 1 then m - 1 else findAns (a + c) (b + d) m 0 in print (Int.toString ans ^ "\n") end