#include <bits/stdc++.h>
using namespace std;
void print(char* t, int k) {
  for (int i = 0; i < k; i++) t[i] = '4';
  for (int i = 0; i < k; i++) t[i + k] = '7';
  t[k + k] = 0;
}
void go2(char* s, int idx) {
  int n = strlen(s);
  int k = n / 2;
  int se = 0;
  int fo = 0;
  for (int i = 0; i < idx; i++) {
    if (s[i] == '4')
      fo++;
    else
      se++;
  }
  for (int i = idx; i < n; i++) {
    if (fo < k) {
      s[i] = '4';
      fo++;
    } else {
      s[i] = '7';
      se++;
    }
  }
}
bool go(char* s) {
  int n = strlen(s);
  int se = 0;
  int fo = 0;
  if (n % 2 == 1) {
    int k = n / 2 + 1;
    print(s, k);
    return true;
  }
  int k = n / 2;
  for (int i = 0; i < n; i++) {
    if (s[i] > '7') {
      if (i == 0) {
        print(s, k + 1);
        return true;
      }
      s[i - 1]++;
      s[i] = '0';
      return false;
    } else if (s[i] == '7') {
      if (se < k) {
        se++;
      } else {
        s[i - 1]++;
        s[i] = '0';
        return false;
      }
    } else if (s[i] > '4') {
      if (se < k) {
        s[i] = '7';
        go2(s, i + 1);
        return true;
      } else {
        s[i - 1]++;
        s[i] = '0';
        return false;
      }
    } else if (s[i] == '4') {
      if (fo < k) {
        fo++;
      } else {
        s[i] = '7';
        go2(s, i + 1);
        return true;
      }
    } else {
      if (fo < k) {
        s[i] = '4';
        go2(s, i + 1);
        return true;
      } else {
        s[i] = '7';
        go2(s, i + 1);
        return true;
      }
    }
  }
  return true;
}
void calc(char* s) {
  while (!go(s))
    ;
}
bool test(long long m) {
  while (m > 0) {
    if (m % 10 == 4 || m % 10 == 7) {
      m /= 10;
    } else {
      return false;
    }
  }
  return true;
}
int main() {
  char s[100010];
  cin >> s;
  calc(s);
  cout << s << endl;
  return 0;
}
