#include <bits/stdc++.h>
const int maxn = 1e5 + 10;
using namespace std;
char str[maxn], ans[maxn];
int n, a[maxn];
bool dfs(int pos, int cnt4, int cnt7, bool flag) {
  if (pos == n) return true;
  if (flag) {
    for (int i = 1; i <= cnt4; i++) ans[pos++] = '4';
    for (int i = 1; i <= cnt7; i++) ans[pos++] = '7';
    return true;
  }
  if (a[pos] <= 4 && cnt4) {
    if (dfs(pos + 1, cnt4 - 1, cnt7, a[pos] < 4)) {
      ans[pos] = '4';
      return true;
    }
  }
  if (a[pos] <= 7 && cnt7) {
    if (dfs(pos + 1, cnt4, cnt7 - 1, a[pos] < 7)) {
      ans[pos] = '7';
      return true;
    }
  }
  return false;
}
int main() {
  scanf("%s", str);
  n = strlen(str);
  for (int i = 0; i < n; i++) a[i] = str[i] - '0';
  if (n & 1) {
    int temp = (n + 1) / 2;
    for (int i = 1; i <= temp; i++) cout << 4;
    for (int i = 1; i <= temp; i++) cout << 7;
    return 0;
  } else if (!dfs(0, n / 2, n / 2, 0)) {
    int temp = (n + 2) / 2;
    for (int i = 1; i <= temp; i++) cout << 4;
    for (int i = 1; i <= temp; i++) cout << 7;
    return 0;
  }
  for (int i = 0; i < n; i++) printf("%c", ans[i]);
  return 0;
}
