"use strict"
const create = () => {
    const input = require("fs").readFileSync("/dev/stdin", "utf8").trim().split("\n");
    const res = {
        "list": input, "index": 0, "max": input.length,
        "hasNext": function () { return this.index < this.max },
        "next": function () { if (!this.hasNext()) { throw "ArrayIndexOutOfBoundsException"; } else { return this.list[this.index++]; } }
    };
    return res;
}
const o = create();
const next = () => o.next()
const nextInt = () => parseInt(o.next())
const nextStrArray = () => o.next().split(" ")
const nextIntArray = () => o.next().split(" ").map(el => parseInt(el))
const nextCharArray = () => o.next().split("")
const hasNext = () => o.hasNext()
const myout = (...x) => console.log(...x)
const Main = () => {
    let [a, b, c] = nextIntArray()
    let k = nextInt()
    let pat = []
    const fn = (num) => {
        for(let i = 0; i<= num; i++){
            pat.push([i, num-i])
        }
    }
    fn(k)
    for(let el of pat){
        let bt = b * Math.pow(2, el[0])
        let ct = c * Math.pow(2, el[1])
        if (bt > a && ct > bt) {
            console.log("Yes")
            return
        }
    }
    console.log("No")
}
Main()

