class Point(val x: Int, val y: Int ) { companion object { fun read() : Point { val (x, y) = readInts() return Point(x, y) } } } fun isParallel(p1:Point, p2:Point, p3:Point, p4:Point) = (p2.x - p1.x) * 1L * (p4.y - p3.y) == (p2.y - p1.y) * 1L * (p4.x - p3.x) fun isOrthogonal(p1:Point, p2:Point, p3:Point, p4:Point) = (p2.x - p1.x) * 1L * (p4.x - p3.x) + (p2.y - p1.y) * 1L * (p4.y - p3.y) == 0L fun length(p1: Point, p2: Point) = (p2.x - p1.x) * 1L * (p2.x - p1.x) + (p2.y - p1.y) * 1L * (p2.y - p1.y) fun main() { val p = List(4) { Point.read() } val isS1Par = isParallel(p[0], p[1], p[2], p[3]) val isS2Par = isParallel(p[1], p[2], p[3], p[0]) val isDOrt = isOrthogonal(p[0], p[2], p[1], p[3]) val isSOrt = isOrthogonal(p[0], p[1], p[1], p[2]) val isKite = isDOrt && (length(p[0], p[1]) == length(p[1], p[2]) || length(p[1], p[2]) == length(p[2], p[3])) val isTrapezium = isS1Par || isS2Par val isParallelogram = isS1Par && isS2Par val isRhombus = isParallelogram && isDOrt val isRectangle = isParallelogram && isSOrt val isSquare = isRectangle && isRhombus println(when { isSquare -> "square" isRectangle -> "rectangle" isRhombus -> "rhombus" isParallelogram -> "parallelogram" isTrapezium -> "trapezium" isKite -> "kite" else -> "none" }) } private fun readLn() = readLine()!! private fun readInt() = readLn().toInt() private fun readLongs() = readStrings().map { it.toLong() } private fun readStrings() = readLn().split(" ") private fun readInts() = readStrings().map { it.toInt() }