void main() {
  import std.stdio, std.string, std.conv, std.algorithm;

  /*
    s[n]=1 => ng
    s[1]=0 => ng ?
    s[1]=1, s[2]=s[3]=...=0, s[n-1]=1, s[n]=0 => star
    s[1]=s[2]=...=s[n-1]=1, s[n]=0 => line
  */

  auto s = readln.chomp.to!(char[]);
  int n = s.length.to!(int);
  if (s[$ - 1] == '1') {
    writeln(-1);
  } else if (s[0] == '0') {
    writeln(-1);
  } else {
    auto allone = reduce!((res, ch) => (res && (ch == '1')))(true, s[0 .. ($ - 1)]);
    if (allone) {
      for (int i = 1; i < n; i++) {
        writeln(i, " ", i + 1);
      }
    } else {
      import std.exception : enforce;

      enforce(n >= 3);
      auto zero = reduce!((res, ch) => (res && (ch == '0')))(true, s[1 .. ($ - 2)]);
      if (zero && s[$ - 2] == '1') {
        for (int i = 2; i <= n; i++) {
          writeln(1, " ", i);
        }
      } else {
        writeln(-1);
      }
    }
  }
}

void rd(T...)(ref T x) {
  import std.stdio : readln;
  import std.string : split;
  import std.conv : to;

  auto l = readln.split;
  assert(l.length == x.length);
  foreach (i, ref e; x)
    e = l[i].to!(typeof(e));
}
