#include <bits/stdc++.h>
using namespace std;
const int OO = 0x3f3f3f3f;
const double eps = (1e-10);
string s;
int mem[100005][3][2];
int dp(int idx, int rem, bool started) {
  if (idx == ((int)((s).size()))) {
    if (!rem && started)
      return 0;
    else
      return -OO;
  }
  int& ret = mem[idx][rem][started];
  if (ret != -1) return ret;
  if (!started) {
    ret = dp(idx + 1, rem, 0);
    if (s[idx] != '0')
      ret = max(ret, 1 + dp(idx + 1, (rem + int(s[idx] - '0')) % 3, 1));
  } else
    ret = max(dp(idx + 1, rem, 1),
              1 + dp(idx + 1, (rem + int(s[idx] - '0')) % 3, 1));
  return ret;
}
void printSoln(int idx, int rem, bool started) {
  if (idx == ((int)((s).size()))) return;
  if (!started) {
    if (dp(idx + 1, rem, 0) == mem[idx][rem][0])
      printSoln(idx + 1, rem, 0);
    else {
      cout << s[idx];
      printSoln(idx + 1, (rem + int(s[idx] - '0')) % 3, 1);
    }
  } else {
    if (dp(idx + 1, rem, 1) == mem[idx][rem][1])
      printSoln(idx + 1, rem, 1);
    else {
      cout << s[idx];
      printSoln(idx + 1, (rem + int(s[idx] - '0')) % 3, 1);
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  cout.precision(3);
  cin >> s;
  memset(mem, -1, sizeof(mem));
  int ans = dp(0, 0, 0);
  if (ans < 0) {
    bool gotZero = 0;
    for (auto& c : s) gotZero += (c == '0');
    cout << (gotZero ? "0\n" : "-1\n");
  } else
    printSoln(0, 0, 0);
  return 0;
}
