import Foundation final class FileIO { private let buffer:[UInt8] private var index: Int = 0 init(fileHandle: FileHandle = FileHandle.standardInput) { buffer = Array(try! fileHandle.readToEnd()!) + [UInt8(0)] } @inline(__always) private func read() -> UInt8 { defer { index += 1 } return buffer[index] } @inline(__always) func readInt() -> Int { var sum = 0 var now = read() var isPositive = true while now == 10 || now == 32 { now = read() } if now == 45 { isPositive = false; now = read() } while now >= 48, now <= 57 { sum = sum * 10 + Int(now-48) now = read() } return sum * (isPositive ? 1 : -1) } } let input = FileIO() var ans: [String] = [] func solve() -> String { let (N, K) = (input.readInt(), input.readInt()) var build_time: [Int] = [0] for _ in 0.. Int { if dp[n] == -1 { var total_time = 0 for prev in pre_build_info[n] { total_time = max(total_time, build(prev)) } dp[n] = total_time + build_time[n] } return dp[n] } return String(build(W)) } func main() { let T = input.readInt() for _ in 0..