local DBG = false
local function dbgpr(...)
    if DBG then
        io.write("[dbg]")
        print(...)
    end
end

local MOD = 1000 * 1000 * 1000 + 7
local function product(t)
    local a = 1
    for _,v in pairs(t) do
        a = a * v % MOD
    end
    return a
end


local H, W, K = io.read("n", "n", "n")

local comb_tbl = {}
local function comb(n)
    if comb_tbl[n] then
        return comb_tbl[n]
    end
    if n <= 0 then
        comb_tbl[n] = 1
        dbgpr("comb",n,1)
        return comb_tbl[n]
    end
    if n == 1 then
        comb_tbl[n] = 2
        dbgpr("comb",n,2)
        return comb_tbl[n]
    end
    if n == 2 then
        comb_tbl[n] = 3
        dbgpr("comb",n,3)
        return comb_tbl[n]
    end
    local a = (comb(n-1) + comb(n-2)) % MOD
    comb_tbl[n] = a
    dbgpr("comb",n,a)
    return a
end

local tbl = {}
local function key(h, w, k)
    return tostring(h) .. "*" .. tostring(w) .. "*" .. tostring(k)
end

local function solve(h, w, k)
    local key_hwk = key(h,w,k)
    if tbl[key_hwk] then
        return tbl[key_hwk]
    end
    if w == 1 then
        dbgpr(h,w,k,1)
        tbl[key_hwk] = 1
        return tbl[key_hwk]
    end
    assert(w >= 2)
    if h == 0 then
        if k == 1 then
            tbl[key_hwk] = 1
        else
            tbl[key_hwk] = 0
        end
        dbgpr(h,w,k,tbl[key_hwk])
        return tbl[key_hwk]
    end
    if h < k - 1 then
        tbl[key_hwk] = 0
        dbgpr(h,w,k,tbl[key_hwk])
        return tbl[key_hwk]
    end
    assert(h >= k - 1)
    local from_just, from_left, from_right = 0, 0, 0
    do
        local left_place = k - 2
        local right_place = w - k - 1
        dbgpr(h,w,k,"from_just",solve(h-1, w, k),left_place,right_place)
        from_just = product({solve(h-1, w, k), comb(left_place), comb(right_place)})
    end
    if k > 1 then
        local left_place = k - 3
        local right_place = w - k - 1
        dbgpr(h,w,k,"from_left",solve(h-1, w, k-1),left_place,right_place)
        from_left = product({solve(h-1, w, k-1), comb(left_place), comb(right_place)})
    end
    if k < w then
        local left_place = k - 2
        local right_place = w - k - 2
        dbgpr(h,w,k,"from_right",solve(h-1, w, k+1),left_place,right_place)
        from_right = product({solve(h-1, w, k+1), comb(left_place), comb(right_place)})
    end
    dbgpr(h,w,k,"jlr",from_just,from_left,from_right)
    local ans = (from_just + from_left + from_right) % MOD
    tbl[key_hwk] = ans
    return tbl[key_hwk]
end

print(solve(H,W,K))