#include <bits/stdc++.h>
using namespace std;
set<long long> se;
stack<int> stk;
map<int, int> mp;
map<int, int>::iterator it;
const int N = 2e5 + 20;
vector<int> v;
int main() {
  int x, y, z, n = 0, m = 0, u = 0, w = 0, fr = -1, ls = -1, po;
  char c1, c2;
  string s, a, b;
  bool f = 0, go = 0;
  cin >> s;
  if (s.find('.') == -1) s += '.';
  for (int i = 0; i < s.size(); i++) {
    if (s[i] != '0' && f == 0 && go == 0 && s[i] != '.') {
      f = 1;
      fr = i;
    }
    if (s[i] != '0' && go == 1) ls = i;
    if (s[i] == '.') {
      po = i;
      go = 1;
    }
  }
  int sol = 0;
  if (fr == -1) {
    bool ok = 0;
    for (int i = po; i <= ls; i++) {
      if (s[i] == '.') continue;
      if (ok == 0) sol++;
      if (ok == 1) a += s[i];
      if (s[i] != '0' && ok == 0) {
        a += s[i];
        if (i != ls) a += '.';
        ok = 1;
      }
    }
    sol *= -1;
  } else {
    if (ls == -1) {
      n = -1;
      for (int i = fr; i <= po; i++) {
        if (s[i] != '0' && s[i] != '.') n = i;
      }
      if (n == -1) n = po;
      a += s[fr];
      if (n != fr) a += '.';
      sol = po - fr - 1;
      for (int i = fr + 1; i <= n; i++) {
        if (s[i] != '.') {
          a += s[i];
        }
      }
    } else {
      bool me = 0;
      a += s[fr];
      a += '.';
      for (int i = fr + 1; i <= ls; i++) {
        if (s[i] == '.') {
          me = 1;
          continue;
        }
        if (s[i] != '.') {
          a += s[i];
          if (po != fr + 1 && me == 0) sol++;
        }
      }
    }
  }
  cout << a;
  if (sol != 0)
    cout << "E" << sol << endl;
  else
    cout << endl;
  return 0;
}
