#include <bits/stdc++.h>
using namespace std;
string ltrim(string in) {
  int a = 0, n = in.size();
  while (a < n && in[a] == '0') {
    a++;
  }
  if (a > n)
    return "";
  else
    return in.substr(a);
}
string rtrim(string in) {
  string ret(in.rbegin(), in.rend());
  string ret2 = ltrim(ret);
  string ret1(ret2.rbegin(), ret2.rend());
  return ret1;
}
string rtrim2(string in) {
  if (in.find('.') != string::npos) {
    return rtrim(in);
  }
  return in;
}
void print(string pre, string suf, int pow) {
  cout << pre;
  string suf2 = rtrim(suf);
  if (suf2.size()) {
    cout << "." << suf2;
  }
  if (pow != 0) {
    cout << "E" << pow;
  }
}
int main() {
  string in;
  cin >> in;
  string lt = ltrim(in);
  string rt = rtrim2(lt);
  bool isNegative = false;
  string pre, suf;
  int pow = 0, osize = rt.size();
  if (rt.empty() || (rt.size() == 1 && rt[0] == '.')) {
    pre = "0";
    suf = "0";
    pow = 0;
  }
  int dPos = rt.find('.');
  if (dPos == string::npos) {
    pre = rt.substr(0, 1);
    suf = rt.substr(1);
    pow = suf.size();
  } else if (dPos == 0) {
    string temp = ltrim(rt.substr(1));
    pre = temp.substr(0, 1);
    suf = temp.substr(1);
    pow = osize - temp.size();
    pow *= -1;
  } else {
    pre = rt.substr(0, 1);
    suf = rt.substr(1, dPos - 1) + rt.substr(1 + dPos);
    pow = dPos - 1;
  }
  print(pre, suf, pow);
  return 0;
}
