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.math.* ;
import java.text.DecimalFormat;
import java.util.* ;
public class Codeshefcode {
	final static long r = 1000000007 ;
	static FasterScanner ip = new FasterScanner() ;
	static PrintWriter op = new PrintWriter(System.out) ; 
	public static void main(String[] args) throws IOException{
		String S = ip.S() ;
		char c[] = S.toCharArray() ;
		int len = S.length() ;
		int ptrl=0 ;
		int ptrr=len-1 ;
		int ptrd=0 ;
		while(ptrd<len)
			if(c[ptrd]=='.')
				break ;			
			else
				ptrd++ ;
		
		while(ptrl<len)
			if(c[ptrl]=='.' || c[ptrl]=='0')
				ptrl++ ;			
			else
				break ;		
		while(ptrr>=0)
			if(c[ptrr]=='.' || c[ptrr]=='0')
				ptrr-- ;
			else
				break ;		
		char[] cr = new char[ptrr-ptrl+1] ;
		for(int i=0 ; i<=ptrr-ptrl ; i++)
			cr[i]=c[ptrl+i] ;
		char[] t = new char[cr.length] ;
		int size=0 ;
		for(int i=0 ; i<cr.length ; i++)
			if(cr[i]!='.'){
				size++ ;
				t[size-1]=cr[i] ;				
			}		
		op.print(t[0]+"") ;
		int E = ptrd-ptrl ;
		E = E>0 ? E-1 : E ; 
		if(size==1)
			op.print(((E!=0) ? "E"+E : "")) ;
		else{
			op.print(".") ;
			for(int i=1 ; i<size ; i++)
				op.print(t[i]+"") ;
			op.print((E!=0) ? "E"+E : "") ;
		}
		Finish() ;	
	}
	static void Finish(){
		op.flush(); 
		op.close();
	}
}
@SuppressWarnings("serial") 
class MyList extends ArrayList<pair>{
	
}
class MyDouble implements Comparable<MyDouble>{
	BigDecimal b ;
    MyDouble a(MyDouble m){
		return new MyDouble((this.b).add(m.b,MathContext.DECIMAL128)) ;
	}
	MyDouble s(MyDouble m){
		return new MyDouble((this.b).subtract(m.b,MathContext.DECIMAL128)) ;
	}
	MyDouble m(MyDouble d){
		return new MyDouble((this.b).multiply(d.b,MathContext.DECIMAL128)) ;
	}
	MyDouble d(MyDouble m){
		return new MyDouble((this.b).divide(m.b,MathContext.DECIMAL128)) ;
	}
	MyDouble(String s){
		b=new BigDecimal(s,MathContext.DECIMAL128) ;
	}
	MyDouble(BigDecimal e){
		b=e ;
	}
	public int compareTo(MyDouble md){
		return this.b.compareTo(md.b) ;
	} 
}
class pair implements Comparable<pair>{
	private long x ;
	private int y ;
	pair(long a,int b){
		x=a ;
		y=b ;		
	}
	public long x(){
		return x ;
	}
	public int y(){
		return y ;
	}
	public int compareTo(pair p){
		int l = Long.compare(this.x,p.x) ;
		if(l!=0)
			return l ;
		return Integer.compare(this.y,p.y) ;
	}
}
class FasterScanner {
 
    private InputStream mIs;
    private byte[] buf = new byte[1024];
    private int curChar;
    private int numChars;
 
    public FasterScanner() {
        this(System.in);
    }
 
    public FasterScanner(InputStream is) {
        mIs = is;
    }
 
    public int read() {
        if (numChars == -1) {
            throw new InputMismatchException();
    
    }
        if (curChar >= numChars) {
            curChar = 0;
            try {
                numChars = mIs.read(buf);
            } catch (IOException e) {
                throw new InputMismatchException();
            }
            if (numChars <= 0) {
                return -1;
            }
        }
        return buf[curChar++];
    }
 
    public String nextLine() {
        int c = read();
        while (isSpaceChar(c)) {
            c = read();
        }
        StringBuilder res = new StringBuilder();
        do {
            res.appendCodePoint(c);
            c = read();
        } while (!isEndOfLine(c));
        return res.toString();
    }
 
    public String S() {
        int c = read();
        while (isSpaceChar(c)) {
            c = read();
        }
        StringBuilder res = new StringBuilder();
        do {
            res.appendCodePoint(c);
            c = read();
        } while (!isSpaceChar(c));
        return res.toString();
    }
 
    public long l() {
        int c = read();
        while (isSpaceChar(c)) {
            c = read();
        }
        int sgn = 1;
        if (c == '-') {
            sgn = -1;
            c = read();
        }
        long res = 0;
        do {
            if (c < '0' || c > '9') {
                throw new InputMismatchException();
            }
            res *= 10;
            res += c - '0';
            c = read();
        } while (!isSpaceChar(c));
        return res * sgn;
    }
 
    public int i() {
        int c = read();
        while (isSpaceChar(c)) {
            c = read();
        }
        int sgn = 1;
        if (c == '-') {
            sgn = -1;
            c = read();
        }
        int res = 0;
        do {
            if (c < '0' || c > '9') {
                throw new InputMismatchException();
            }
            res *= 10;
            res += c - '0';
            c = read();
        } while (!isSpaceChar(c));
        return res * sgn;
    }
 
    public boolean isSpaceChar(int c) {
        return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
    }
 
    public boolean isEndOfLine(int c) {
        return c == '\n' || c == '\r' || c == -1;
    } 
}