fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) fun buildTable [] table = ignore () | buildTable ((a, b) :: tl) table = ( Array.appi (fn (i, v) => let val thisV = Int.max(b - abs(i - a), 0) val newV = Int.max(thisV, v) in Array.update (table, i, newV) end) table; buildTable tl table ) fun printTable right table = Array.appi (fn (i, v) => if i = 0 then ignore () else ( print (Int.toString v); if i = right then print "\n" else print " " ) ) table val () = let val n = readInt () val x = readInt () val ab_s = List.tabulate (n, fn _ => (readInt (), readInt())) val table = Array.array (x + 1, 0) in ( buildTable ab_s table; printTable x table ) end