#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e16;
const string E = "\n";
template <class T>
string TS(T ss) {
  ostringstream oss;
  oss << ss;
  return oss.str();
}
template <class T>
T ABS(T n) {
  return (n >= 0 ? n : -n);
}
template <class T>
T BP(T n, long long int k, long long int mod = 0) {
  T res = 1;
  while (k) {
    if (k & 1) {
      res *= n;
      if (mod) {
        res %= mod;
      }
    }
    n *= n;
    if (mod) {
      n %= mod;
    }
    k >>= 1;
  }
  return res;
}
struct ST {
  long long int v, k, d;
  ST(long long int v, long long int k, long long int d) : v(v), k(k), d(d) {}
  ST(long long int v, long long int k) : v(v), k(k) {}
  ST() {}
  bool operator<(const ST &it) const { return v < it.v; }
};
char buf[(int)1e6 + 10], buf1[(int)1e6 + 10];
long long int n = 0, m = 0, k = 0, mod = 1e9 + 7;
vector<long long int> dx = {0, 1, 0, -1}, dy = {-1, 0, 1, 0};
string s = "";
vector<long long int> vex, vis, now, dig;
vector<vector<long long int> > g;
void dfs(int v) {
  vis[v] = 1;
  now.push_back(v);
  dig.push_back(vex[v]);
  for (int i = 0; i < g[v].size(); i++) {
    if (!vis[g[v][i]]) {
      dfs(g[v][i]);
    }
  }
}
void task() {
  scanf("%s\n", buf);
  s = buf;
  int i = 0, j = s.size() - 1;
  while (s[i] == '0') {
    i++;
  }
  if (s.find('.') != string::npos)
    while (s[j] == '0') {
      j--;
    }
  s = s.substr(i, j - i + 1);
  i = 0;
  j = s.size() - 1;
  if (s[0] == '.') {
    i++;
    while (s[i] == '0') {
      i++;
    }
    s = s.substr(i, 1) + "." + s.substr(i + 1, s.size() - 1 - i);
    if (s[s.size() - 1] == '.') {
      s.erase(s.size() - 1, 1);
    }
    printf("%sE-%d", s.c_str(), i);
  } else {
    k = s.find('.');
    if (k == string::npos) {
      k = s.size();
      s += ".";
    }
    s.erase(k, 1);
    s = s.substr(0, 1) + "." + s.substr(1, s.size() - 1);
    i = 0;
    j = s.size() - 1;
    while (s[j] == '0') {
      j--;
    }
    s = s.substr(0, j + 1);
    if (s[s.size() - 1] == '.') {
      s.erase(s.size() - 1, 1);
    }
    if (k == 1) {
      printf("%s", s.c_str());
    } else {
      printf("%sE%I64d", s.c_str(), k - 1);
    }
  }
  return;
  scanf("%I64d%I64d", &n, &m);
  vex.resize(n, 0);
  for (int i = 0; i < n; i++) {
    scanf("%I64d", &vex[i]);
  }
}
int main() {
  task();
  return 0;
}
