/**
 * This function takes in three integer arguments: start, end, and step.
 * It returns a list of pairs, where each pair represents a subrange within the range from start to end.
 * The step argument specifies the increment between values in each subrange.
 */
fun getSubranges(start: Int, end: Int, step: Int): List<Pair<Int, Int>> {

    val subranges = mutableListOf<Pair<Int, Int>>()

    for (i in start until end step step) {
        var subrangeStart = i
        var subrangeEnd = i + step

        if (subrangeEnd > end) {
            subrangeEnd = end
        }

        subranges.add(Pair(subrangeStart, subrangeEnd))
    }

    return subranges
}
/**
 * This function takes in three integer arguments: start, end, and step.
 * It returns a list of pairs, where each pair represents a subrange within the range from start to end.
 * The step argument specifies the increment between values in each subrange.
 */
fun getSubranges(start: Int, end: Int, step: Int): List<Pair<Int, Int>> {
/**
 * This function takes in three integer arguments: start, end, and step.
 * It returns a list of pairs, where each pair represents a subrange within the range from start to end.
 * The step argument specifies the increment between values in each subrange.
 */
fun getSubranges(start: Int, end: Int, step: Int): List<Pair<Int, Int>> {

    val subranges = mutableListOf<Pair<Int, Int>>()

    for (i in start until end step step) {
        var subrangeStart = i
        var subrangeEnd = i + step

        if (subrangeEnd > end) {
            subrangeEnd = end
        }

        subranges.add(Pair(subrangeStart, subrangeEnd))
    }

    return subranges
}