fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) fun readStr () = let fun scan reader stream = SOME (StringCvt.splitl (not o Char.isSpace) reader (StringCvt.skipWS reader stream)) in valOf (TextIO.scanStream scan TextIO.stdIn) end val () = let val s = readStr () val i = readInt () val j = readInt () val min_i = Int.min (i, j) val max_i = Int.max (i, j) val sList = String.explode s val minIChar = List.nth (sList, min_i) val maxIChar = List.nth (sList, max_i) val parts1 = List.take (sList, min_i) val parts2 = List.take (List.drop (sList, min_i + 1), max_i - min_i - 1) val parts3 = List.drop (sList, max_i + 1) val ans = String.implode (parts1 @ [maxIChar] @ parts2 @ [minIChar] @ parts3) in print (ans ^ "\n") end