#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:256000000")
const int INF = 2147483647;
const long long lINF = 9223372036854775807;
using namespace std;
ifstream in;
ofstream out;
int main() {
  in.open("input.txt");
  string s, answ = "";
  cin >> s;
  int sum = 0;
  int n = s.length();
  vector<int> ind[2];
  reverse(s.begin(), s.end());
  string s1 = s;
  for (int i = 0; i < (n); i++) {
    sum += (s[i] - '0');
    sum %= 3;
    if ((s[i] - '0') % 3 == 2)
      ind[1].push_back(i);
    else if ((s[i] - '0') % 3 == 1)
      ind[0].push_back(i);
  }
  if (sum == 0) {
    reverse(s.begin(), s.end());
    cout << s << endl;
    return 0;
  }
  sum--;
  if (s.size() > 1 && ind[sum].size() > 0) {
    int it = ind[sum][0];
    if (it == n - 1) {
      s.pop_back();
      while (s.size() > 1 && s.back() == '0') s.pop_back();
      reverse(s.begin(), s.end());
      answ = s;
    } else {
      for (int i = n - 1; i >= 0; i--) {
        if (i == it) continue;
        answ += s[i];
      }
    }
  }
  string answ1 = answ;
  answ = "";
  s = s1;
  if (s.size() > 2 && ind[(sum + 1) % 2].size() >= 2) {
    int f = ind[(sum + 1) % 2][0];
    int se = ind[(sum + 1) % 2][1];
    if (se == n - 1) {
      s.pop_back();
      while (s.size() > 2 && s.back() == '0') s.pop_back();
      if (s.size() - 1 == f) {
        s.pop_back();
        while (s.size() > 1 && s.back() == '0') s.pop_back();
      }
    }
    for (int i = s.size() - 1; i >= 0; i--) {
      if (i == f || i == se) continue;
      answ += s[i];
    }
  }
  if (answ == "") answ = "-1";
  if (answ1 == "") answ1 = "-1";
  if (answ == "-1" && answ1 == "-1")
    cout << "-1";
  else if (answ == "-1")
    cout << answ1;
  else if (answ1 == "-1")
    cout << answ;
  else
    cout << ((answ.size() > answ1.size()) ? answ : answ1) << endl;
  return 0;
}
