#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  string t;
  cin >> t;
  int n = t.length();
  if (n & 1) {
    for (int i = 0; i < (int)(n + 1) / 2; ++i) {
      cout << 4;
    }
    for (int i = 0; i < (int)(n + 1) / 2; ++i) {
      cout << 7;
    }
    cout << '\n';
    return 0;
  }
  bool any = false;
  int f = 0, s = 0;
  string ans(n, 'a');
  for (int i = 0; i < (int)n; ++i) {
    if (any) {
      if (f < n / 2) {
        ++f;
        ans[i] = '4';
      } else {
        ++s;
        ans[i] = '7';
      }
    } else {
      if (t[i] > '7' || (t[i] > '4' && s == n / 2)) {
        cerr << '[' << "i"
             << " ] = " << (i) << endl;
        ;
        for (int j = (i)-1; j >= (int)0; --j) {
          if (ans[j] == '4' && t[j] < '7' && s < n / 2) {
            --f;
            ++s;
            ans[j] = '7';
            any = true;
            i = j;
            break;
          }
          if (ans[j] == '4')
            --f;
          else
            --s;
        }
        if (!any) {
          s = -1, f = -1;
        }
      } else if (t[i] > '4') {
        ans[i] = '7';
        ++s;
        if ('7' > t[i]) any = true;
      } else {
        char tar = (f == n / 2 ? '7' : '4');
        ans[i] = tar;
        f += tar == '4';
        s += tar == '7';
        if (tar > t[i]) any = true;
      }
    }
  }
  if (s == n / 2 && f == n / 2) {
    cout << ans << '\n';
  } else {
    for (int i = 0; i < (int)n / 2 + 1; ++i) cout << 4;
    for (int i = 0; i < (int)n / 2 + 1; ++i) cout << 7;
    cout << '\n';
    return 0;
  }
}
