object Main {
  import java.util.Scanner

  def readStrings(n: Int)(implicit sc: Scanner): Array[String] = Array.fill(n) { sc.next() }
  def readInts(n: Int)(implicit sc: Scanner): Array[Int] = Array.fill(n) { sc.nextInt() }
  def readLongs(n: Int)(implicit sc: Scanner): Array[Long] = Array.fill(n) { sc.nextLong() }
  def readLineStrings(implicit sc: Scanner): Array[String] = sc.nextLine().split(' ')
  def readLineInts(implicit sc: Scanner): Array[Int] = readLineStrings.map(_.toInt)
  def readLineLongs(implicit sc: Scanner): Array[Long] = readLineStrings.map(_.toLong)

  def main(args: Array[String]): Unit = solve(new Scanner(System.in))

  def solve(implicit sc: Scanner): Unit = {
    val s = readLineStrings(sc)(0).toList.map(_ == '1').toArray
    val n = s.length
    if (!s.head || s.last) {
      println(-1)
      return
    }
    if (!(0 to (n - 2)).forall(i => s(i) == s(n - 2 - i))) {
      println(-1)
      return
    }
    var nodeIndex = 1
    while (nodeIndex < n - 1) {
      if (s(nodeIndex)) {
        println(s"$nodeIndex ${nodeIndex + 1}")
        nodeIndex += 1
      } else {
        var nextNodeIndex = nodeIndex
        while (!s(nextNodeIndex)) nextNodeIndex += 1
        nextNodeIndex += 1
        for (i <- nodeIndex until nextNodeIndex) {
          println(s"$i $nextNodeIndex")
        }
        nodeIndex = nextNodeIndex
      }
    }
    println(s"${n - 1} $n")
  }
}