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.*;
import java.util.*;

public class C {
	InputStream is;

	int __t__ = 1;
	int __f__ = 0;
	int __FILE_DEBUG_FLAG__ = __f__;
	String __DEBUG_FILE_NAME__ = "src/T";

	FastScanner in;
	PrintWriter out;

	int countLeftZeros(String s) {
		int cnt = 0;
		while (cnt < s.length() && s.charAt(cnt) == '0') cnt++;
		return cnt;
	}
	
	String removeLeftZeros(String s) {
		int leftMost = countLeftZeros(s);
		
		StringBuilder res = new StringBuilder();
		for (int i = leftMost; i < s.length(); i++)
			res.append(s.charAt(i));
		return res.toString();
	}
	
	String removeRightZeros(String s) {
		int rightMost = s.length() - 1;
		while (rightMost >= 0 && s.charAt(rightMost) == '0') rightMost--;
		StringBuilder res = new StringBuilder();
		for (int i = 0; i <= rightMost; i++)
			res.append(s.charAt(i));
		return res.toString();
	}
	
	public void solve() {
		String s = in.next();
		if (s.charAt(s.length() - 1) == '.') s += "0";
		else if (s.charAt(0) == '.') s = "0" + s;
		
		if (s.indexOf('.') == -1) s += ".0";
		
		String[] ws = s.split("[.]");
		String left = ws[0], right = ws[1];
		left = removeLeftZeros(left);
		right = removeRightZeros(right);
		
		if (left.length() == 0 && right.length() == 0) {
			System.out.println(0);
			return;
		}
		
		String a, b;
		// construct a
		if (left.length() == 0) {
			if (right.length() == 1) {
				a = right;
			} else {
				String rr = removeLeftZeros(right);
				a = rr.charAt(0) + "";
				if (rr.length() > 1)  a += "." + rr.substring(1, rr.length());
			}
		} else if (left.length() == 1) {
			if (right.length() == 0) {
				a = left;
			} else {
				a = left + "." + right;
			}
		} else {
			a = left.charAt(0) + "." + left.substring(1, left.length()) + right;
		}
		a = removeRightZeros(a);
		if (a.charAt(a.length() - 1) == '.') a = a.substring(0, a.length() - 1);
		
		// construct b
		if (left.length() == 0) {
			b = -(countLeftZeros(right) + 1) + "";
		} else {
			b = left.length() - 1 + "";					
		}
		
		// display answer
		if (b.matches("0")) {
			System.out.println(a);
		} else {
			System.out.println(a + "E" + b);
		}
	}

	public void run() {
		if (__FILE_DEBUG_FLAG__ == __t__) {
			try {
				is = new FileInputStream(__DEBUG_FILE_NAME__);
			} catch (FileNotFoundException e) {
				// TODO 自動生成された catch ブロック
				e.printStackTrace();
			}
			System.out.println("FILE_INPUT!");
		} else {
			is = System.in;
		}
		in = new FastScanner(is);
		out = new PrintWriter(System.out);

		solve();
	}

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

	public void mapDebug(int[][] a) {
		System.out.println("--------map display---------");

		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[i].length; j++) {
				System.out.printf("%3d ", a[i][j]);
			}
			System.out.println();
		}

		System.out.println("----------------------------");
		System.out.println();
	}

	public void debug(Object... obj) {
		System.out.println(Arrays.deepToString(obj));
	}

	class FastScanner {
		private InputStream stream;
		private byte[] buf = new byte[1024];
		private int curChar;
		private int numChars;

		public FastScanner(InputStream stream) {
			this.stream = stream;
			//stream = new FileInputStream(new File("dec.in"));

		}

		int read() {
			if (numChars == -1)
				throw new InputMismatchException();
			if (curChar >= numChars) {
				curChar = 0;
				try {
					numChars = stream.read(buf);
				} catch (IOException e) {
					throw new InputMismatchException();
				}
				if (numChars <= 0)
					return -1;
			}
			return buf[curChar++];
		}

		boolean isSpaceChar(int c) {
			return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
		}

		boolean isEndline(int c) {
			return c == '\n' || c == '\r' || c == -1;
		}

		int nextInt() {
			return Integer.parseInt(next());
		}

		int[] nextIntArray(int n) {
			return nextIntArray(n, 0);
		}

		int[] nextIntArray(int n, int margin) {
			int[] array = new int[n + margin];
			for (int i = 0; i < n; i++)
				array[i + margin] = nextInt();

			return array;
		}

		int[][] nextIntMap(int n, int m) {
			int[][] map = new int[n][m];
			for (int i = 0; i < n; i++) {
				map[i] = in.nextIntArray(m);
			}
			return map;
		}

		long nextLong() {
			return Long.parseLong(next());
		}

		long[] nextLongArray(int n) {
			return nextLongArray(n, 0);
		}

		long[] nextLongArray(int n, int margin) {
			long[] array = new long[n + margin];
			for (int i = 0; i < n; i++)
				array[i + margin] = nextLong();

			return array;
		}

		long[][] nextLongMap(int n, int m) {
			long[][] map = new long[n][m];
			for (int i = 0; i < n; i++) {
				map[i] = in.nextLongArray(m);
			}
			return map;
		}

		double nextDouble() {
			return Double.parseDouble(next());
		}

		double[] nextDoubleArray(int n) {
			return nextDoubleArray(n, 0);
		}

		double[] nextDoubleArray(int n, int margin) {
			double[] array = new double[n + margin];
			for (int i = 0; i < n; i++)
				array[i + margin] = nextDouble();

			return array;
		}

		double[][] nextDoubleMap(int n, int m) {
			double[][] map = new double[n][m];
			for (int i = 0; i < n; i++) {
				map[i] = in.nextDoubleArray(m);
			}
			return map;
		}

		String next() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isSpaceChar(c));
			return res.toString();
		}

		String[] nextStringArray(int n) {
			String[] array = new String[n];
			for (int i = 0; i < n; i++)
				array[i] = next();

			return array;
		}

		String nextLine() {
			int c = read();
			while (isEndline(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isEndline(c));
			return res.toString();
		}
	}
}