#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007LL;
template <class T>
void printImpl(const vector<T>& coll) {
  copy(coll.begin(), coll.end(), ostream_iterator<T>(cout, " "));
  cout << endl;
}
template <class T, int N>
void printImpl(T (&coll)[N]) {
  copy(coll, coll + N, ostream_iterator<T>(cout, " "));
  cout << endl;
}
template <class Key, class Value>
void printImpl(const map<Key, Value>& data) {
  typename map<Key, Value>::const_iterator it;
  for (it = data.begin(); it != data.end(); ++it) {
    cout << it->first << ":" << it->second << endl;
  }
}
template <class T>
void printImpl(const T& data) {
  cout << data << endl;
}
string removeFrontZeros(const string& s) {
  for (int i = 0; i < s.length(); ++i) {
    if (s[i] != '0') {
      return s.substr(i);
    }
  }
  return "0";
}
string removeBackZeros(const string& s) {
  for (int i = s.length() - 1; i >= 0; --i) {
    if (s[i] != '0') {
      return s.substr(0, i + 1);
    }
  }
  return "0";
}
string int2str(int x) {
  char res[1000];
  sprintf(res, "%d", x);
  return string(res);
}
string get2(string before, string after) {
  before = removeFrontZeros(before);
  after = removeBackZeros(after);
  int e = 0;
  if (before.length() > 1) {
    e += before.length() - 1;
    after = before.substr(1) + after;
    after = removeBackZeros(after);
    before = before.substr(0, 1);
  }
  if (after == "0") {
    string res = before;
    if (e != 0) {
      res += 'E';
      res += int2str(e);
      return res;
    }
  }
  if (before == "0") {
    for (int i = 0; i < after.length(); ++i) {
      if (after[i] != '0') {
        before = string(1, after[i]);
        after = after.substr(i + 1);
        e -= i + 1;
        break;
      }
    }
    removeBackZeros(after);
  }
  string res = before + (after == "" || after == "0" ? "" : "." + after);
  if (e != 0) {
    res += 'E';
    res += int2str(e);
  }
  return res;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  string s;
  cin >> s;
  string before, after;
  size_t pos = s.find('.');
  if (pos == string::npos) {
    before = s;
    after = "";
  } else {
    before = s.substr(0, pos);
    after = s.substr(pos + 1);
  }
  cout << get2(before, after) << endl;
  return 0;
}
