#include <bits/stdc++.h>
using namespace std;
vector<char> G;
char s[100005];
int dp[100005][5], pre[100005][5];
int main() {
  int n, i, j, u, v, tmp;
  while (scanf("%s", s + 1) != EOF) {
    n = strlen(s + 1);
    memset(dp, -1, sizeof(dp));
    memset(pre, -1, sizeof(pre));
    for (i = 1; i <= n; i++) dp[i][0] = 0;
    pre[i][0] = 0;
    dp[1][(s[1] - '0') % 3] = 1;
    pre[1][(s[1] - '0') % 3] = 1;
    for (i = 2; i <= n; i++) {
      for (j = 0; j < 3; j++) {
        if (dp[i - 1][j] != -1) {
          if (dp[i][j] < dp[i - 1][j]) {
            pre[i][j] = 0;
            dp[i][j] = dp[i - 1][j];
          }
          if (dp[i - 1][j] == 0 && s[i] == '0') continue;
          if (dp[i][(j + s[i] - '0' + 3) % 3] < dp[i - 1][j] + 1) {
            pre[i][(j + s[i] - '0' + 3) % 3] = 1;
            dp[i][(j + s[i] - '0' + 3) % 3] = dp[i - 1][j] + 1;
          }
        }
      }
    }
    if (dp[n][0] == 0) {
      for (i = 1; i <= n; i++) {
        if (s[i] == '0') goto next;
      }
      puts("-1");
      continue;
    next:
      puts("0");
      continue;
    }
    G.clear();
    u = n, v = 0;
    while (u) {
      tmp = pre[u][v];
      if (tmp == 1) {
        G.push_back(s[u]);
        v = (v - (s[u] - '0') % 3 + 3) % 3;
      }
      u--;
    }
    for (i = G.size() - 1; i >= 0; i--) printf("%c", G[i]);
    printf("\n");
  }
  return 0;
}
