Problem: You are given a positive decimal number x.

Your task is to convert it to the "simple exponential notation".

Let x = a·10b, where 1 ≤ a < 10, then in general case the "simple exponential notation" looks like "aEb". If b equals to zero, the part "Eb" should be skipped. If a is an integer, it should be written without decimal point. Also there should not be extra zeroes in a and b.

Input

The only line contains the positive decimal number x. The length of the line will not exceed 106. Note that you are given too large number, so you can't use standard built-in data types "float", "double" and other.

Output

Print the only line — the "simple exponential notation" of the given number x.

Examples

Input

16


Output

1.6E1


Input

01.23400


Output

1.234


Input

.100


Output

1E-1


Input

100.


Output

1E2

Solution (in JAVA):

Solution:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Locale;
import java.util.StringTokenizer;

public class O {

    private void solve() {
        String number = readString();
        String answer = getAnswer(number);
        out.println(answer);
    }

    String getAnswer(String number) {
        int dotIndex = number.indexOf(".");

        if (dotIndex < 0) {
            dotIndex = number.length();
            number += ".0";
        }

        if (0 == dotIndex) {
            dotIndex = 1;
            number = "0" + number;
        }

        String integerPart = number.substring(0, dotIndex);
        String floatPart = number.substring(dotIndex + 1);

        char[] numberWithoutDot = (integerPart + floatPart).toCharArray();

        int firstNotZeroIndex = 0;
        while (firstNotZeroIndex < numberWithoutDot.length && '0' == numberWithoutDot[firstNotZeroIndex]) ++firstNotZeroIndex;

        int lastNotZeroIndex = numberWithoutDot.length - 1;
        while (lastNotZeroIndex >= 0 && '0' == numberWithoutDot[lastNotZeroIndex]) --lastNotZeroIndex;

        int expectedDotIndex = firstNotZeroIndex + 1;
        int exponent = dotIndex - expectedDotIndex;

        StringBuilder answer = new StringBuilder();
        answer.append(numberWithoutDot[firstNotZeroIndex]);

        if (firstNotZeroIndex != lastNotZeroIndex) {
            answer.append('.');
        }

        for (int index = firstNotZeroIndex + 1; index <= lastNotZeroIndex; ++index) {
            answer.append(numberWithoutDot[index]);
        }

        if (exponent != 0) {
            answer.append('E').append(exponent);
        }

        return answer.toString();
    }

    //////////////////////////////////////////////////////////////////

    long sqrtLong(long x) {
        long root = (long)Math.sqrt(x);
        while (root * root > x) --root;
        while ((root + 1) * (root + 1) <= x) ++root;
        return root;
    }

    //////////////////////////////////////////////////////////////////

    private boolean yesNo(boolean yes) {
        return yesNo(yes, "YES", "NO");
    }

    private boolean yesNo(boolean yes, String yesString, String noString) {
        out.println(yes ? yesString : noString);
        return yes;
    }

    //////////////////////////////////////////////////////////////////

    private long readLong() {
        return Long.parseLong(readString());
    }

    private int[] readIntArray(int n) {
        int[] a = new int[n];
        for (int i = 0; i < n; ++i) a[i] = readInt();
        return a;
    }

    private int readInt() {
        return Integer.parseInt(readString());
    }

    private String readString() {
        while (!tok.hasMoreTokens()) {
            String nextLine = readLine();
            if (null == nextLine) return null;
            tok = new StringTokenizer(nextLine);
        }

        return tok.nextToken();
    }

    private String readLine() {
        try {
            return in.readLine();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    //////////////////////////////////////////////////////////////////

    private BufferedReader in;
    private StringTokenizer tok;
    private PrintWriter out;

    private void initFileIO(String inputFileName, String outputFileName) throws FileNotFoundException {
        in = new BufferedReader(new FileReader(inputFileName));
        out = new PrintWriter(outputFileName);
    }

    private void initConsoleIO() throws IOException {
        in = new BufferedReader(new InputStreamReader(System.in));
        out = new PrintWriter(System.out);
    }

    private void initIO() throws IOException {
        Locale.setDefault(Locale.US);

        String fileName = "";

        if (!fileName.isEmpty()) {
            initFileIO(fileName + ".in", fileName + ".out");
        } else {
            if (new File("input.txt").exists()) {
                initFileIO("input.txt", "output.txt");
            } else {
                initConsoleIO();
            }
        }

        tok = new StringTokenizer("");
    }

    //////////////////////////////////////////////////////////////////

    private void run() {
        try {
            long timeStart = System.currentTimeMillis();

            initIO();
            solve();
            out.close();

            long timeEnd = System.currentTimeMillis();
            System.err.println("Time(ms) = " + (timeEnd - timeStart));
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        new O().run();
    }
}