#include <bits/stdc++.h>
using namespace std;
int main() {
  string s;
  cin >> s;
  vector<long long int> v;
  long long int l = s.length();
  long long int i;
  for (i = 0; i < l; i++) {
    v.push_back(int(s[i]) - int('0'));
  }
  if (l == 1 && v[0] % 8 != 0) {
    cout << "NO" << endl;
    return 0;
  }
  long long int flag = 0;
  for (i = 0; i < l; i++) {
    if (v[i] % 2 == 0) {
      flag = 1;
    }
    if (v[i] == 0) {
      flag = 2;
      break;
    }
    if (v[i] == 8) {
      flag = 3;
      break;
    }
  }
  if (l == 2 && ((v[0] * 10) + v[1]) % 8 == 0) {
    cout << "YES" << endl;
    cout << ((v[0] * 10) + v[1]) << endl;
    return 0;
  }
  if (flag == 0) {
    cout << "NO" << endl;
    return 0;
  } else if (flag == 2) {
    cout << "YES" << endl;
    cout << "0" << endl;
    return 0;
  } else if (flag == 3) {
    cout << "YES" << endl;
    cout << "8" << endl;
    return 0;
  } else if (l == 1) {
    cout << "NO" << endl;
    return 0;
  } else if (l == 2) {
    cout << "NO" << endl;
    return 0;
  }
  long long int p;
  flag = 0;
  long long int j;
  long long int k;
  long long int n, m;
  long long int w;
  for (k = 0; k < l - 2; k++) {
    for (i = k + 1; i < l - 1; i++) {
      n = (v[k] * 10) + v[i];
      if (n % 8 == 0) {
        cout << "YES" << endl;
        cout << n << endl;
        return 0;
      }
      for (j = i + 1; j < l; j++) {
        m = (v[i] * 10) + v[j];
        if (m % 8 == 0) {
          cout << "YES" << endl;
          cout << m << endl;
          return 0;
        }
        w = (v[k] * 10) + v[j];
        if (w % 8 == 0) {
          cout << "YES" << endl;
          cout << w << endl;
          return 0;
        }
        p = (v[k] * 100) + (v[i] * 10) + v[j];
        if (p % 8 == 0) {
          flag = 1;
          break;
        }
      }
      if (flag == 1) {
        break;
      }
    }
    if (flag == 1) {
      break;
    }
  }
  if (flag == 1) {
    cout << "YES" << endl;
    cout << p << endl;
  } else {
    cout << "NO" << endl;
  }
  return 0;
}
