#include <bits/stdc++.h>
using namespace std;
string delzeroes(string s) {
  int i = 0;
  string ret = "";
  while (s[i] == '0' && i < s.length()) {
    i++;
  }
  while (i < s.size()) {
    ret += s[i];
    i++;
  }
  return ret;
}
void hehe() {
  string s;
  cin >> s;
  vector<int> rem;
  int div = 0;
  vector<int> single1, single2;
  for (int i = 1; i <= 9; i++) {
    if (i % 3 == 1) {
      single1.push_back(i);
    } else if (i % 3 == 2) {
      single2.push_back(i);
    }
  }
  vector<pair<int, int>> double1, double2;
  for (int i = 0; i < 10; i++) {
    for (int j = i; j < 10; j++) {
      if (i % 3 == 0 || j % 3 == 0) {
        continue;
      }
      if ((i + j) % 3 == 1) {
        double1.push_back({i, j});
      } else if ((i + j) % 3 == 2) {
        double2.push_back({i, j});
      }
    }
  }
  int sum = 0;
  for (int i = 0; i < s.size(); i++) {
    int x = s[i] - '0';
    sum += x;
  }
  sum %= 3;
  string ans = "";
  if (sum == 0) {
    ans = s;
  } else if (sum == 1) {
    vector<string> m;
    for (int i = 0; i < single1.size(); i++) {
      string temp = s;
      for (int j = temp.size() - 1; j >= 0; j--) {
        int x = temp[j] - '0';
        if (x == single1[i]) {
          temp.erase(temp.begin() + j);
          m.push_back(temp);
          break;
        }
      }
    }
    for (int i = 0; i < double1.size(); i++) {
      int a = double1[i].first;
      int b = double1[i].second;
      string temp = s;
      for (int j = temp.size() - 1; j >= 0; j--) {
        int x = temp[j] - '0';
        if (x == a) {
          temp.erase(temp.begin() + j);
          break;
        }
      }
      if (s.size() != temp.size()) {
        bool found = false;
        for (int j = temp.size() - 1; j >= 0; j--) {
          int x = temp[j] - '0';
          if (x == b) {
            temp.erase(temp.begin() + j);
            found = true;
            break;
          }
        }
        if (found) {
          m.push_back(temp);
        }
      }
    }
    for (int i = 0; i < m.size(); i++) {
      m[i] = delzeroes(m[i]);
      if (ans.length() < m[i].length()) {
        ans = m[i];
      }
    }
  } else {
    vector<string> m;
    for (int i = 0; i < single2.size(); i++) {
      string temp = s;
      for (int j = temp.size() - 1; j >= 0; j--) {
        int x = temp[j] - '0';
        if (x == single2[i]) {
          temp.erase(temp.begin() + j);
          m.push_back(temp);
          break;
        }
      }
    }
    for (int i = 0; i < double2.size(); i++) {
      int a = double2[i].first;
      int b = double2[i].second;
      string temp = s;
      for (int j = temp.size() - 1; j >= 0; j--) {
        int x = temp[j] - '0';
        if (x == a) {
          temp.erase(temp.begin() + j);
          break;
        }
      }
      if (s.size() != temp.size()) {
        bool found = false;
        for (int j = temp.size() - 1; j >= 0; j--) {
          int x = temp[j] - '0';
          if (x == b) {
            temp.erase(temp.begin() + j);
            found = true;
            break;
          }
        }
        if (found) {
          m.push_back(temp);
        }
      }
    }
    for (int i = 0; i < m.size(); i++) {
      m[i] = delzeroes(m[i]);
      if (ans.length() < m[i].length()) {
        ans = m[i];
      }
    }
  }
  if (ans == "") {
    for (int i = 0; i < s.length(); i++) {
      if (s[i] == '0') {
        cout << 0;
        return;
      }
    }
    cout << -1;
  } else {
    cout << ans;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int t = 1;
  while (t--) {
    hehe();
  }
  return 0;
}
