Problem: The city administration of IT City decided to fix up a symbol of scientific and technical progress in the city's main square, namely an indicator board that shows the effect of Moore's law in real time.

Moore's law is the observation that the number of transistors in a dense integrated circuit doubles approximately every 24 months. The implication of Moore's law is that computer performance as function of time increases exponentially as well.

You are to prepare information that will change every second to display on the indicator board. Let's assume that every second the number of transistors increases exactly 1.000000011 times.

Input

The only line of the input contains a pair of integers n (1000 ≤ n ≤ 10 000) and t (0 ≤ t ≤ 2 000 000 000) — the number of transistors in the initial time and the number of seconds passed since the initial time.

Output

Output one number — the estimate of the number of transistors in a dence integrated circuit in t seconds since the initial time. The relative error of your answer should not be greater than 10 - 6.

Examples

Input

1000 1000000


Output

1011.060722383550382782399454922040

Solution (in JAVA):

Solution:

import java.io.*;
import java.util.*;

//public class Main{		// codechef
//public class Solution{	// codeforces	hackerrank

public class Solution {

	static FastScanner in;
	static PrintWriter out;
	static final int mod = 1000000007;
	static final long modL = 100000000000000000l;

	// write code
	static void solve() {

		get630B();
		// get496A();
//		get614A();//	incomplete
		// get616A();
		// get620A();
		// get621A();
		// get625A();
	}

	static void get630B(){
		int n=in.nextInt();
		int t=in.nextInt();
		final double i=1.000000011;
		double a=n;
		/*while(t-->0){
			a = a*i;
		}*/
		out.printf("%10f", n*Math.pow(i, t));
	}
	
	//	http://codeforces.com/problemset/problem/496/A
	//	A. Minimum Difficulty || Accepted
	static void get496A() {
		int n=in.nextInt();
		int []A=in.getArrayInt(n);
		int []D= new int[n-1];
//		int min=Integer.MAX_VALUE;
		int max=Integer.MIN_VALUE;
		for(int i=0; i<n-1;i++){
			D[i]=A[i+1]-A[i];
//			min=Math.min(min, D[i]);
			max=Math.max(max, D[i]);
		}
		int nextMax=Integer.MAX_VALUE;
		for(int i=0;i<n-1-1;i++){
			int m = D[i]+D[i+1];
			if(m<max){
				out.println(max);
				return;
			}
			nextMax = Math.min(nextMax, m);
		}
		out.println(nextMax);
		
		
	}
	
	static void get614A() {
		long l = in.nextLong(), r = in.nextLong(), k = in.nextLong();
		Boolean isFound = false;
		long n = k;
		while (n < l) {
			n = n * k;
		}
		for (; n <= r;) {
			out.println(n);
			isFound = true;
			if (r / n < k) {
				break;
			}
			n = n * k;
		}

		/*
		 * long min = (long) (Math.log10(l) / Math.log10(k)) - 1; long max =
		 * (long) (Math.log10(r) / Math.log10(k)) + 1;
		 * 
		 * while (Math.pow(k, min) < l) min++;
		 * 
		 * long t= Long.MAX_VALUE;
		 * 
		 * for (; min <= max; min++) { double n = Math.pow(k, min);
		 * 
		 * if (n <= r) { out.println((long)n); isFound = true; } / *if (r/n < k)
		 * { min = max + 1; }* / }
		 */
		if (!isFound) {
			out.println(-1);
		}

	}

	// http://codeforces.com/problemset/problem/616/A
	// A. Comparing Two Long Integers || AC
	static void get616A() {
		char[] A = in.nextToken().toCharArray();
		char[] B = in.nextToken().toCharArray();
		int lA = A.length;
		int lB = B.length;
		int n = Math.min(lA, lB);

		int iA = 0, iB = 0;
		if (lA > lB) {
			for (; iA < (lA - lB); iA++) {
				if (A[iA] > '0') {
					out.println(">");
					return;
				}
			}
		} else if (lB > lA) {
			for (; iB < (lB - lA); iB++) {
				if (B[iB] > '0') {
					out.println("<");
					return;
				}
			}
		}

		for (; iA < lA && iB < lB; iA++, iB++) {
			if (A[iA] == B[iB])
				continue;
			if (A[iA] > B[iB]) {
				out.println(">");
				return;
			} else {
				out.println("<");
				return;
			}
		}

		out.println("=");
	}

	// http://codeforces.com/problemset/problem/620/A
	// A. Professor GukiZ's Robot || Accepted
	static void get620A() {
		int x1 = in.nextInt(), y1 = in.nextInt();
		int x2 = in.nextInt(), y2 = in.nextInt();

		int dx = Math.abs(x2 - x1);
		int dy = Math.abs(y2 - y1);
		int steps = Math.max(dx, dy);

		out.println(steps);

	}

	// http://codeforces.com/problemset/problem/621/A
	// A. Wet Shark and Odd and Even || Accepted
	static void get621A() {
		int n = in.nextInt();
		int min = Integer.MAX_VALUE;
		long sum = 0;
		for (int i = 0; i != n; i++) {
			int a = in.nextInt();
			sum += a;
			if (a < min && 0 != a % 2) {
				min = a;
			}
		}
		if (0 != sum % 2) {
			if (min < (1000 * 1000 * 1000))
				sum -= min;
			else
				sum = 0;
		}
		out.println(sum);
	}

	// http://codeforces.com/problemset/problem/625/A
	// A. Guest From the Past || Accepted
	static void get625A() {
		long n = in.nextLong();
		long a = in.nextLong();
		long b = in.nextLong();
		long c = in.nextLong();

		if (a <= (b - c)) {
			out.println(n / a);
			return;
		}
		long count = 0;
		while (n >= a || n >= b) {
			while (n >= b) {
				long nT = n - b;
				long kT = nT / (b - c);
				n -= kT * (b - c);
				count += kT;

				long k = n / b;
				n -= k * b;
				n += k * c;
				count += k;
			}
			while (n >= a) {
				count += n / a;
				n = n % a;
			}
		}
		out.println(count);
	}

	// part of pre-defined template

	static long modI(long i, Boolean isMod) {
		if (isMod) {
			if (i >= mod)
				i = i % mod;
			return i;
		}
		if (i > modL)
			i = i % mod;
		return i;
	}

	public static void run() {
		in = new FastScanner();
		out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
		solve();
		out.close();
	}

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

	private static class FastScanner {
		BufferedReader br;
		StringTokenizer st;

		public FastScanner(String s) {
			try {
				br = new BufferedReader(new FileReader(s));
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		public FastScanner() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}

		String nextToken() {
			while (st == null || !st.hasMoreElements()) {
				try {
					st = new StringTokenizer(br.readLine());
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			return st.nextToken();
		}

		int[] getArrayInt(int n) {
			int[] arr = new int[n];
			for (int i = 0; i < n; i++) {
				arr[i] = nextInt();
			}
			return arr;
		}

		long[] getArrayLong(int n) {
			long[] arr = new long[n];
			for (int i = 0; i < n; i++) {
				arr[i] = nextLong();
			}
			return arr;
		}

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

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

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

}