#include <bits/stdc++.h>
using namespace std;
int calcMask(int i, int j) { return 1 << (i * 4 + j); }
string s;
stack<pair<int, int> > st;
bool f(int t, int bitmask) {
  if (t >= s.size()) return true;
  int aux = 0;
  for (int i = 0; i < 4; i++) {
    bool foo = true;
    for (int j = 0; j < 4; j++) {
      if (!(bitmask & calcMask(i, j))) foo = false;
    }
    if (foo)
      for (int j = 0; j < 4; j++) {
        if (!(aux & calcMask(i, j))) {
          aux += calcMask(i, j);
        }
      }
  }
  for (int i = 0; i < 4; i++) {
    bool foo = true;
    for (int j = 0; j < 4; j++) {
      if (!(bitmask & calcMask(j, i))) foo = false;
    }
    if (foo)
      for (int j = 0; j < 4; j++) {
        if (!(aux & calcMask(j, i))) {
          aux += calcMask(j, i);
        }
      }
  }
  bitmask -= aux;
  for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4; j++) {
      if (!(bitmask & calcMask(i, j))) {
        if (s[t] == '0') {
          if (i + 1 < 4 && !(bitmask & calcMask(i + 1, j))) {
            bool ans = f(t + 1, bitmask + calcMask(i, j) + calcMask(i + 1, j));
            if (ans) {
              st.push({i + 1, j + 1});
              return true;
            }
          }
        } else {
          if (j + 1 < 4 && !(bitmask & calcMask(i, j + 1))) {
            bool ans = f(t + 1, bitmask + calcMask(i, j) + calcMask(i, j + 1));
            if (ans) {
              st.push({i + 1, j + 1});
              return true;
            }
          }
        }
      }
    }
  }
  return false;
}
int main() {
  cin >> s;
  f(0, 0);
  while (!st.empty()) {
    printf("%d %d\n", st.top().first, st.top().second);
    st.pop();
  }
  return 0;
}
