use std::io::*;
use std::str::*;
use std::fmt::*;

fn readw<T: FromStr, R: Read>(s: &mut R) -> Option<T> {
    let s = s.bytes().map(|c| c.unwrap() as char)
        .skip_while(|c| c.is_whitespace())
        .take_while(|c| !c.is_whitespace())
        .collect::<String>();
    if s.is_empty() {
        None
    } else {
        s.parse::<T>().ok()
    }
}

fn read<T: FromStr, R: Read>(s: &mut R) -> T {
    readw(s).unwrap()
}

#[allow(dead_code)]
fn p<A: Display>(a: &A) {
    println!("{}", a);
}

#[allow(dead_code)]
fn p2<A: Display, B: Display>(a: &A, b: &B) {
    println!("{} {}", a, b);
}

#[allow(dead_code)]
fn p3<A: Display, B: Display, C: Display>(a: &A, b: &B, c: &C) {
    println!("{} {} {}", a, b, c);
}

fn main(){
    let s = stdin();
    let mut s = BufReader::new(s.lock());
    let s = &mut s;
    while let Some(m) = readw(s) {
        let n = read(s);
        println!("{:.10}", (0..n).fold(m, |e: f64, _| (e * 2.0 + e + 1.0) / 3.0));
    }
}