#include <bits/stdc++.h>
using namespace std;
const int INF = (int)1e9;
class CDivisibilityByEight {
 public:
  void solve(std::istream& in, std::ostream& out) {
    string S;
    in >> S;
    int N = S.size();
    vector<vector<pair<int, int>>> dp(
        N + 1, vector<pair<int, int>>(8, pair<int, int>(INF, INF)));
    for (int i = 0; i < (N); ++i) {
      int d = S[i] - '0';
      if (d == 0) {
        out << "YES" << '\n' << 0 << '\n';
        return;
      }
      for (int j = 0; j < (8); ++j) {
        if (dp[i][j].first < INF) {
          dp[i + 1][j] = dp[i][j];
          dp[i + 1][(10 * j + d) % 8] = pair<int, int>(i, j);
        }
      }
      if (dp[i][d % 8].first == INF) {
        dp[i][d % 8] = pair<int, int>(-1, -1);
        dp[i + 1][d % 8] = pair<int, int>(i, d % 8);
      }
    }
    if (dp[N][0].first < INF) {
      int idx = dp[N][0].first, r = dp[N][0].second;
      string ans;
      while (-1 < idx) {
        ans += S[idx];
        tie(idx, r) = pair<int, int>(dp[idx][r].first, dp[idx][r].second);
      }
      reverse((ans).begin(), (ans).end());
      out << "YES\n" << ans << '\n';
    } else
      out << "NO\n" << '\n';
  }
};
int main() {
  CDivisibilityByEight solver;
  std::istream& in(std::cin);
  std::ostream& out(std::cout);
  solver.solve(in, out);
  return 0;
}
