#include <bits/stdc++.h>
char str[1000010];
int n, dp[1000010][3][3][3];
int F(int i, int mod, int counter, int first) {
  if (first > 0) first = 1;
  if (counter > 2) counter = 2;
  if (i == n) {
    if (mod == 0 && counter >= 1) {
      if (counter == 1) return 0;
      if (counter == 2 && first == 0) return 1000010;
      return 0;
    } else
      return 1000010;
  }
  if (dp[i][mod][counter][first] != -1) return dp[i][mod][counter][first];
  int d, x, res = 1 + F(i + 1, mod, counter, first);
  d = str[i] - 48;
  if (counter == 0)
    x = F(i + 1, (mod * 10 + d) % 3, counter + 1, d);
  else
    x = F(i + 1, (mod * 10 + d) % 3, counter + 1, first);
  if (x < res) res = x;
  return (dp[i][mod][counter][first] = res);
}
void backtrack(int i, int mod, int counter, int first) {
  if (first > 0) first = 1;
  if (counter > 2) counter = 2;
  if (i == n) return;
  int d, x, res = 1 + F(i + 1, mod, counter, first);
  d = str[i] - 48;
  if (counter == 0)
    x = F(i + 1, (mod * 10 + d) % 3, counter + 1, d);
  else
    x = F(i + 1, (mod * 10 + d) % 3, counter + 1, first);
  if (res < x) {
    return backtrack(i + 1, mod, counter, first);
  } else {
    putchar(str[i]);
    if (counter == 0)
      return backtrack(i + 1, (mod * 10 + d) % 3, counter + 1, d);
    else
      return backtrack(i + 1, (mod * 10 + d) % 3, counter + 1, first);
  }
}
int main() {
  int i, j, k, l;
  while (scanf("%s", str) != EOF) {
    n = strlen(str);
    memset(dp, -1, sizeof(dp));
    int res = F(0, 0, 0, 0);
    if (res >= 1000010)
      puts("-1");
    else {
      backtrack(0, 0, 0, 0);
      puts("");
    }
  }
  return 0;
}
