import java.util.regex.Matcher import java.util.regex.Pattern fun main(args: Array) { fun readLineLongArray(): List { val str = readLine() as String val arrStr = str.split(" ") val ret = arrStr.map { it.toLong() } return ret } fun readLineLong(): Long { val str = readLine() as String return str.toLong() } fun readLineInt(): Int { val str = readLine() as String return str.toInt() } fun readLineIntArray() : List { val str = readLine() as String val arrStr = str.split(" ") val ret = arrStr.map { it.toInt() } return ret } fun readLineDoubleArray(): List { val str = readLine() as String val arrStr = str.split(" ") val ret = arrStr.map { it.toDouble() } return ret } fun readLineDouble() : Double { val str = readLine() as String return str.toDouble() } fun readLineString() : String { return readLine() as String } // fun readLineStringArray(): List { // val str = readLine() as String // val arrStr = str.split(" ") // return arrStr // } val n = readLineInt() if (n == 1) { println(0) return } val l = readLineInt() var ave = 0.toDouble() var aveList = Array(n-1,{0.toDouble()}) var list = arrayListOf(0) for (i in 1..(n-1)) { val tmp = readLineInt() val bf = list.last() if (Math.abs(tmp-bf) >= l) { print(-1) return } list.add(tmp) // ave += tmp } var tmpS = 0.toDouble() for (i in (aveList.size) downTo 1) { // for (j in (i+1)..(n-1)) { // aveList[i] += list[j] // } tmpS += list[i] aveList[i-1] = tmpS } for (i in 0..(aveList.size-1)) { aveList[i] += (l * (n-i-1)).toDouble() / 2.toDouble() aveList[i] /= n-i-1 } // ave += (l * n).toDouble() / 2.toDouble() // ave /= n // println(ave) // for (item in aveList) { // println(item) // } var count = 0 for (i in 0..(n-2)) { if (list[i] < aveList[i] && aveList[i] < (list[i]+l) && list[i+1] < aveList[i] && aveList[i] < (list[i+1]+l)) { } else { count++ } } print(count) }