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.*;

import javax.sound.midi.Synthesizer;
import javax.swing.plaf.synth.SynthSpinnerUI;


public class Fight {
	static Scanner sc=new Scanner(System.in);
	static PrintWriter out=new PrintWriter(System.out);
	static int n1,m ;
	static ArrayList<Integer>[] adj;
	static int[][] adjMatrix;
	static boolean[] vis;
	static int[] dist;
	static long sum=0;
	static StringTokenizer st;
	public static void main(String [] args) throws IOException, InterruptedException {
		int n=sc.nextInt();
		int t=sc.nextInt();
		System.out.println(n*Math.pow(1.000000011,t));
		
	}
	
	
	
	
	public static int bfs(Integer x) {
		Queue<Integer> q=new LinkedList<>();
		q.add(x);
		dist=new int[n];
		Arrays.fill(dist, -1);
		dist[x] = 0;
		int max=0;
		while(!q.isEmpty()) {
			int cur=q.remove();
			for(int v:adj[cur]) {
				if(dist[v]==-1) {
					q.add(v);
					
					dist[v]=dist[cur]+1;
					max=Math.max(max, dist[v]);
				}
			}
		}
return max;
	}



	private static int rec(double req,int i,int n,int f[],int c[]) {
		if(i==n) {
			if(req<1e-9) {
				return 0;
			}
			else {
				return (int) 1e9;
			}
		}
			return Math.min(rec(req,i+1,n,f,c),c[i]+rec(req-f[i],i+1,n,f,c));
			
		
		
	}



	public static long pow(long x,long y){
		long ans=1;
		while(y-->0) {
		if(ans>1e18/x) {
			return 0;
		}
		else
		ans*=x;
		}
		return ans;
	}

	
	
	static boolean f1;
	private static void  rec(int i, int sum) {
		if(i==5) {
		if(sum==23) {
			f1=true;
		}
		
		}
		
		for (int j = 0; j < 5; j++) {
			
		
		if(!vis[j]) {
		vis[j]=true;
			 rec(i+1,sum+c[j]);rec(i+1,sum-c[j]);rec(i+1,sum*c[j]);
			 vis[j]=false;
		}
		
		}
		}
	static int n;
	static int d[];
static int c[];
    static void permute(int idx, int mask,int sum) {
        if (mask == (1 << n1) - 1) {
        	if(primes.contains(d[0]+d[c.length-1])&&primes.contains(d[d.length-1]+d[d.length-2]))
        	{for (int i = 0; i < d.length; i++) {
				if(i==d.length-1) {
					out.print(d[i]);
				}
				
				else
        		out.print(d[i]+" ");
			}
        	out.println();
        	}
        }
    
        if(d[0]!=0&&d[0]!=1) {
        	return;
        }
        if(idx!=0)
        
        
        if(sum!=0&&idx!=1&&idx!=0&&!primes.contains(d[idx-1]+d[idx-2])) {
        	return;
        }
        
        
         
         for (int i = 0; i < n1; i++) {
            if ((mask & 1 << i) == 0) {
                d[idx] = c[i];
                      
                permute(idx + 1, mask | 1 << i,d[idx]);
            }
        }
    }
	
	static int min=0;
	static int dfs(int u)
    {
		boolean f=true;
		vis[u]=true;
		for (int b : adj[u]) {
			if(!vis[b]) {
			c[u]+=dfs(b);
			f=false;
			}
		}
		if(f) {
			return c[u]=1;
		}
		
		return c[u];
		
		
		
    }	
		
	
	static int x;
	  static int [] end;
	static int cost=Integer.MAX_VALUE;
	
	static class edge{
		int x; int y;
		public edge(int x1, int y1) {
		x=x1;
		y=y1;
		}
	}
		
		
	
	static HashSet<Integer> primes;
	static int[] isComposite;

	static void sieve(int N)	// O(N log log N) 
	{
		isComposite = new int[N+1];					
		isComposite[0] = isComposite[1] = 1;			// 0 indicates a prime number
		primes = new HashSet<Integer>();
		int curmax=0;
		int ans[]=new int[N+1];

		for (int i = 2; i <= N; ++i) 					//can loop till i*i <= N if primes array is not needed O(N log log sqrt(N)) 
			if (isComposite[i] == 0) 					//can loop in 2 and odd integers for slightly better performance
			{
				x++;
				ans[i]=x;
				primes.add(i);
				if(1l * i * i <= N)
					for (int j = i * i; j <= N; j += i) {	// j = i * 2 will not affect performance too much, may alter in modified sieve
							ans[j]=x;
						
						isComposite[j] = 1;
								
					}
			} 
		
	}

	
	
	
	



	private static boolean works(long mid,int[] a,int cur,long sum) {
		int i, j;
		for(i = 0, j = a.length - 1; cur> 0 && i <= j;cur--,i++,j--) {
			if(a[i] + a[j] >mid)
			{
			i--;
			}
	}
		return i>j;
	
	}


   
	static  class Scanner {
	StringTokenizer st;
	BufferedReader br;

	public Scanner(InputStream s) {
		br = new BufferedReader(new InputStreamReader(s));
	}

	public String next() throws IOException {
		while (st == null || !st.hasMoreTokens())
			st = new StringTokenizer(br.readLine());
		return st.nextToken();
	}

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

	public int[] nextIntArr(int n) throws IOException {
		int[] arr = new int[n];
		for (int i = 0; i < n; i++)
			arr[i] = nextInt();
		return arr;
	}

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

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

	public String nextLine() throws IOException {
		return br.readLine();
	}

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

	public boolean ready() throws IOException {
		return br.ready();
	}
	public void waitForInput() throws InterruptedException {Thread.sleep(1000);}
}
}