#include <bits/stdc++.h>
using namespace std;
vector<long long> a;
vector<long long> used;
map<long long, long long> mp;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  string s;
  cin >> s;
  long long n = s.size();
  long long q = 0;
  for (long long i = 0; i < n; i++) {
    q += (s[i] - '0');
  }
  q = q % 3;
  if (q % 3 == 0) {
    long long i = 0;
    while (s.size() > 1 && s[i] == '0') {
      s.erase(i, 1);
    }
    cout << s;
    return 0;
  }
  string s1 = s;
  long long q1 = q;
  for (long long i = s.size() - 1; i >= 0; i--) {
    long long z = s[i] - '0';
    if (z % 3 == 1) {
      s.erase(i, 1);
      i++;
      q -= z;
    }
    if (q % 3 == 0) break;
  }
  for (long long i = s1.size() - 1; i >= 0; i--) {
    long long z = s1[i] - '0';
    if (z % 3 == 2) {
      s1.erase(i, 1);
      i++;
      q1 -= z;
    }
    if (q1 % 3 == 0) break;
  }
  if ((s.size() == 0 || q % 3 != 0) && (q1 % 3 != 0 || s1.size() == 0)) {
    cout << -1;
    return 0;
  }
  long long i = 0;
  while (s.size() > 1 && s[i] == '0') {
    s.erase(i, 1);
  }
  i = 0;
  while (s1.size() > 1 && s1[i] == '0') {
    s1.erase(i, 1);
  }
  if (q % 3 == 0 && q1 % 3 != 0) {
    cout << s;
    return 0;
  }
  if (q % 3 != 0 && q1 % 3 == 0) {
    cout << s1;
    return 0;
  }
  if (s.size() < s1.size())
    cout << s1;
  else
    cout << s;
  return 0;
}
