#include <bits/stdc++.h>
char a[100001];
int N, N10[100001], N11[100001], N20[100001], N21[100001], T[100001], O, S, D1,
    D2;
void push(int w, int s, int d1, int d2) {
  if (w < O) {
    O = w;
    S = s;
    D1 = d1;
    D2 = d2;
  }
}
int main() {
  scanf("%s", a);
  while (a[N]) N++;
  N10[N] = N;
  N11[N] = N;
  N20[N] = N;
  N21[N] = N;
  T[N] = 0;
  for (int i = N - 1; ~i; i--) {
    N10[i] = N10[i + 1];
    N11[i] = N11[i + 1];
    N20[i] = N20[i + 1];
    N21[i] = N21[i + 1];
    if (a[i] % 3 == 1) {
      N11[i] = N10[i];
      N10[i] = i;
    }
    if (a[i] % 3 == 2) {
      N21[i] = N20[i];
      N20[i] = i;
    }
    T[i] = (T[i + 1] + a[i]) % 3;
  }
  O = N;
  for (int i = 0; i < N; i++)
    if (a[i] > 48) switch (T[i] % 3) {
        case 0:
          push(i, i, N, N);
          break;
        case 1:
          if (N10[i + 1] < N)
            push(i + 1, i, N10[i + 1], N);
          else if (N21[i + 1] < N)
            push(i + 2, i, N20[i + 1], N21[i + 1]);
          break;
        case 2:
          if (N20[i + 1] < N)
            push(i + 1, i, N20[i + 1], N);
          else if (N11[i + 1] < N)
            push(i + 2, i, N10[i + 1], N11[i + 1]);
      }
  if (O == N) {
    for (int i = 0; i < N; i++)
      if (a[i] == 48) {
        puts("0");
        return 0;
      }
    puts("-1");
    return 0;
  } else {
    for (int i = S; i < N; i++)
      if (i != D1 && i != D2) putchar(a[i]);
    puts("");
  }
  return 0;
}
