#include <bits/stdc++.h>
using namespace std;
const int inf = ~0U >> 1;
const long long INF = ~0ULL >> 1;
template <class T>
inline void read(T &n) {
  char c;
  int flag = 1;
  for (c = getchar(); !(c >= '0' && c <= '9' || c == '-'); c = getchar())
    ;
  if (c == '-')
    flag = -1, n = 0;
  else
    n = c - '0';
  for (c = getchar(); c >= '0' && c <= '9'; c = getchar()) n = n * 10 + c - '0';
  n *= flag;
}
int v[100][100], d[100][100];
char str[10000];
int n;
void p0() {
  for (int j = 1; j <= 4; j += 3)
    for (int i = 1; i <= 4; i += 2)
      if (!v[i][j] && !v[i + 1][j]) {
        v[i][j] = v[i + 1][j] = 1;
        printf("%d %d\n", i, j);
        return;
      }
  assert(0);
}
void p1() {
  for (int i = 1; i <= 4; i++)
    if (!v[i][2] && !v[i][3]) {
      v[i][2] = v[i][3] = 1;
      printf("%d %d\n", i, 2);
      return;
    }
  assert(0);
}
int main(int argc, char *argv[]) {
  scanf("%s", str);
  n = strlen(str);
  for (int i = (0); i < (n); ++i) {
    if (str[i] == '0') {
      p0();
    } else {
      p1();
    }
    for (int x = (1); x <= (4); ++x)
      for (int y = (1); y <= (4); ++y) {
        d[x][y] = false;
        bool ok = true;
        for (int z = (1); z <= (4); ++z)
          if (!v[x][z]) ok = false;
        if (ok) d[x][y] = true;
        ok = true;
        for (int z = (1); z <= (4); ++z)
          if (!v[z][y]) ok = false;
        if (ok) d[x][y] = true;
      }
    for (int x = (1); x <= (4); ++x)
      for (int y = (1); y <= (4); ++y)
        if (d[x][y]) v[x][y] = 0;
  }
  return 0;
}
