import java.util.* fun main() { val (n, q) = readLine()!!.split(' ').map(String::toInt) val s = readLine()!! val queries = List(q) { val (x, y) = readLine()!!.trim().split(' ').map(String::toInt) minOf(x, y) - 1 to maxOf(x, y) - 1 } val stack = mutableListOf() val pair = IntArray(n) for (i in s.indices) { when(s[i]) { '(' -> stack.add(i) ')' -> { val l = stack.removeLast() pair[l] = i pair[i] = l } } } val set = TreeSet() var last = 0 val result = IntArray(q){-1} for ((index, p) in queries.withIndex().sortedBy { it.value.first }) { val (min, max) = p while (last < n && last <= min) { if (s[last] == '(') { set.add(pair[last]) } last += 1 } result[index] = set.higher(max - 1) ?: continue } println(result.joinToString("\n"){i -> if (i >= 0) "${pair[i] + 1} ${i + 1}" else "-1"}) }