#include <bits/stdc++.h>
using namespace std;
const int MX = (1 << 19);
string str;
void jd(int n) {
  for (int j = 1; j <= n; j += 2) cout << '4';
  for (int j = 1; j <= n; j += 2) cout << '7';
  cout << endl;
}
int n;
bool check(int pos) {
  int rf = n / 2, rs = n / 2;
  for (int j = 0; j <= pos; j++) {
    if (str[j] != '4' && str[j] != '7') return 0;
    if (str[j] == '4') {
      if (rf)
        rf--;
      else
        return 0;
    }
    if (str[j] == '7') {
      if (rs)
        --rs;
      else
        return 0;
    }
  }
  for (int j = pos + 1; j < n; j++) {
    if (str[j] > '7') return 0;
    if (str[j] < '7' && rs) return 1;
    if (str[j] == '7') {
      if (rs)
        --rs;
      else
        return 0;
      continue;
    }
    if (str[j] > '4') return 0;
    if (str[j] < '4' && rf) return 1;
    if (str[j] == '4') {
      if (rf)
        rf--;
      else
        return 0;
      continue;
    }
  }
  return 1;
}
int main() {
  cin >> str;
  int f = count(str.begin(), str.end(), '4');
  int s = count(str.begin(), str.end(), '7');
  if (s == f && s + f == str.size()) {
    cout << str << endl;
    return 0;
  }
  n = str.size();
  if (n % 2) {
    ++n;
    jd(n);
    return 0;
  }
  int st = 0, en = n - 1, mid, best = -1;
  while (st <= en) {
    mid = (st + en) / 2;
    if (check(mid)) {
      best = mid;
      st = mid + 1;
    } else
      en = mid - 1;
  }
  if (best == -1 && !check(-1)) {
    jd(n + 2);
    return 0;
  }
  int rf = n / 2, rs = n / 2;
  for (int j = 0; j <= best; j++) {
    if (str[j] == '4')
      rf--;
    else
      rs--;
    cout << str[j];
  }
  if (str[best + 1] < '4') {
    cout << '4';
    rf--;
  } else {
    cout << '7';
    rs--;
  }
  while (rf--) cout << '4';
  while (rs--) cout << '7';
}
