data class Grab(val red: Int, val green: Int, val blue: Int)

fun main() = println(
    generateSequence(::readLine)
        .sumOf { line ->
            // Parse input
            val games = line.substringAfter(":").split("; ")
                .map { gameString ->
                    val red = gameString.substringBefore(" red").substringAfterLast(" ").toIntOrNull() ?: 0
                    val green = gameString.substringBefore(" green").substringAfterLast(" ").toIntOrNull() ?: 0
                    val blue = gameString.substringBefore(" blue").substringAfterLast(" ").toIntOrNull() ?: 0
                    return@map Grab(red, green, blue)
                }

            return@sumOf games.maxOf { it.red } * games.maxOf { it.green } * games.maxOf { it.blue }
        }
)