class Solution {
    fun imageSmoother(img: Array<IntArray>): Array<IntArray> {
        if (img.isEmpty()) {
            return listOf<IntArray>().toTypedArray()
        }
        val maxHeightIndex = img.size
        val maxLengthIndex = img[0].size

        val movementList: List<Int> = listOf(-1, 0, 1)

        val answerList: MutableList<IntArray> = mutableListOf()
        for(i in 0..<maxHeightIndex) {
            val intList: MutableList<Int> = mutableListOf()
            for (j in 0..<maxLengthIndex) {
                val localAverageList: MutableList<Int> = mutableListOf()
                movementList.forEach { yDiff ->
                    val localY = i + yDiff
                    movementList.forEach { xDiff ->
                        val localX = j + xDiff
                        if (localY in 0..<maxHeightIndex && localX in 0..<maxLengthIndex) {
                            localAverageList.add(img[localY][localX])
                        }
                    }
                }
                val av = localAverageList.average().toInt()
                intList.add(av)
            }
            answerList.add(intList.toIntArray())
        }

        return answerList.toTypedArray()
    }
}