#include <bits/stdc++.h>
using namespace std;
template <typename T>
T gcd(T a, T b) {
  return b == 0 ? a : gcd(b, a % b);
}
template <typename T>
T LCM(T a, T b) {
  return a * (b / gcd(a, b));
}
template <typename T, typename second>
T expo(T b, second e, const T &m) {
  if (e <= 1) return e == 0 ? 1 : b;
  return (e & 1) == 0 ? expo((b * b) % m, e >> 1, m)
                      : (b * expo((b * b) % m, e >> 1, m)) % m;
}
template <typename T, typename second>
T expo(T b, second e) {
  if (e <= 1) return e == 0 ? 1 : b;
  return (e & 1) == 0 ? expo((b * b), e >> 1) : (b * expo((b * b), e >> 1));
}
template <typename T>
T modinv(T a) {
  return expo(a, 1000000007ll - 2, 1000000007ll);
}
template <class T, class second>
std::ostream &operator<<(std::ostream &os, const std::pair<T, second> &t) {
  os << "(" << t.first << ", " << t.second << ")";
  return os;
}
template <class T>
std::ostream &operator<<(std::ostream &os, const std::vector<T> &t) {
  os << "[";
  for (__typeof(t.begin()) it = t.begin(); it != t.end(); it++) {
    if (it != t.begin()) os << ", ";
    os << *it;
  }
  os << "]";
  return os;
}
int main() {
  ios_base::sync_with_stdio(false);
  string input;
  cin >> input;
  string a, b;
  int i;
  for (i = 0; i < input.size() and input[i] != '.'; i++) {
    a.push_back(input[i]);
  }
  for (; i < input.size(); i++) {
    if (input[i] == '.') {
      continue;
    }
    b.push_back(input[i]);
  }
  int lead = -1;
  for (; lead + 1 < a.size(); lead++) {
    if (a[lead + 1] != '0') {
      break;
    }
  }
  a = a.substr(lead + 1);
  while (b.size() and b.back() == '0') {
    b.pop_back();
  }
  if (a.empty() and b.empty()) {
    assert(false);
  } else if (a.empty()) {
    if (b.size() == 1) {
      cout << b << "E-1\n";
    } else {
      int non_zero = 0, neg = 0;
      for (; non_zero < b.size(); non_zero++) {
        if (b[non_zero] != '0') {
          break;
        }
      }
      neg = non_zero + 1;
      assert(non_zero < b.size());
      b = b.substr(non_zero);
      cout << b[0];
      if (b.size() > 1) {
        cout << "." << b.substr(1);
      }
      cout << "E" << -neg << '\n';
    }
  } else if (b.empty()) {
    if (a.size() == 1) {
      cout << a << '\n';
    } else {
      cout << a[0];
      a = a.substr(1);
      int crap = a.size();
      bool flag = true;
      for (auto &c : a)
        if (c != '0') flag = false;
      if (!flag) {
        while (a.size() and a.back() == '0') a.pop_back();
        cout << '.' << a;
      }
      cout << 'E' << crap << '\n';
    }
  } else {
    if (a.size() == 1) {
      cout << a << "." << b << '\n';
    } else {
      cout << a[0] << "." << a.substr(1) << b << "E" << (a.size() - 1) << '\n';
    }
  }
  return 0;
}
