H, W, K = list(map(int, input().split()))

mod = 10 ** 9 + 7



# 高さiにおいて左からj番目の棒にいる通り数

dp = [[0] * W for i in range(H + 1)]

dp[0][0] = 1





def pattern(w):

    """ 幅wのあみだにおいて、validなものの通り数を返す """

    # 例外処理

    if w < 0:

        return 1



    cnt = 0

    for i in range(2 ** w):

        b = bin(2 ** w + i)[3:]

        if '11' not in b:

            cnt += 1

    return cnt





for i in range(1, H + 1):

    for j in range(W):

        tmp = 0

        # 上からおりてくる

        tmp += dp[i - 1][j] * pattern(j - 1) * pattern(W - j - 2) % mod



        # 左からおりてくる

        if j > 0:

            tmp += dp[i - 1][j - 1] * pattern(j - 2) * pattern(W - j - 2) % mod



        # 右からおりてくる

        if j < W - 1:

            tmp += dp[i - 1][j + 1] * pattern(j - 1) * pattern(W - j - 3) % mod



        dp[i][j] += tmp



print((dp[H][K - 1] % mod))

from itertools import product

H, W, K = list(map(int, input().split()))

mod = 10 ** 9 + 7



# dp[i][j]:= 上からi番目, 左からj番目にいる通り数

dp = [[0] * W for i in range(H + 1)]

dp[0][0] = 1





def calc(x):

    if x < 0:

        return 1

    ret = 0

    for p in product(['0', '1'], repeat=x):

        p = ''.join(p)

        if '11' not in p:

            ret += 1

    return ret





for i in range(1, H + 1):

    for j in range(W):

        tmp = 0

        if j > 0:  # 左から

            tmp += dp[i - 1][j - 1] * calc(j - 2) * calc(W - j - 2) % mod



        # 上から

        tmp += dp[i - 1][j] * calc(j - 1) * calc(W - j - 2) % mod



        if j + 1 < W:  # 右から

            tmp += dp[i - 1][j + 1] * calc(j - 1) * calc(W - j - 3) % mod



        dp[i][j] = tmp



print((dp[H][K - 1] % mod))

H, W, K = list(map(int, input().split()))
mod = 10**9 + 7
# 高さiにおいて左からj番目の棒にいる通り数
dp = [[0] * W for i in range(H + 1)]
dp[0][0] = 1


def pattern(w):
    """幅wのあみだにおいて、validなものの通り数を返す"""
    # 例外処理
    if w < 0:
        return 1
    cnt = 0
    for i in range(2**w):
        b = bin(2**w + i)[3:]
        if "11" not in b:
            cnt += 1
    return cnt


for i in range(1, H + 1):
    for j in range(W):
        tmp = 0
        # 上からおりてくる
        tmp += dp[i - 1][j] * pattern(j - 1) * pattern(W - j - 2) % mod
        # 左からおりてくる
        if j > 0:
            tmp += dp[i - 1][j - 1] * pattern(j - 2) * pattern(W - j - 2) % mod
        # 右からおりてくる
        if j < W - 1:
            tmp += dp[i - 1][j + 1] * pattern(j - 1) * pattern(W - j - 3) % mod
        dp[i][j] += tmp
print((dp[H][K - 1] % mod))

from itertools import product

H, W, K = list(map(int, input().split()))
mod = 10**9 + 7
# dp[i][j]:= 上からi番目, 左からj番目にいる通り数
dp = [[0] * W for i in range(H + 1)]
dp[0][0] = 1


def calc(x):
    if x < 0:
        return 1
    ret = 0
    for p in product(["0", "1"], repeat=x):
        p = "".join(p)
        if "11" not in p:
            ret += 1
    return ret


for i in range(1, H + 1):
    for j in range(W):
        tmp = 0
        if j > 0:  # 左から
            tmp += dp[i - 1][j - 1] * calc(j - 2) * calc(W - j - 2) % mod
        # 上から
        tmp += dp[i - 1][j] * calc(j - 1) * calc(W - j - 2) % mod
        if j + 1 < W:  # 右から
            tmp += dp[i - 1][j + 1] * calc(j - 1) * calc(W - j - 3) % mod
        dp[i][j] = tmp
print((dp[H][K - 1] % mod))

+from itertools import product + -# 高さiにおいて左からj番目の棒にいる通り数 +# dp[i][j]:= 上からi番目, 左からj番目にいる通り数 -def pattern(w): -    """幅wのあみだにおいて、validなものの通り数を返す""" -    # 例外処理 -    if w < 0: +def calc(x): +    if x < 0: -    cnt = 0 -    for i in range(2**w): -        b = bin(2**w + i)[3:] -        if "11" not in b: -            cnt += 1 -    return cnt +    ret = 0 +    for p in product(["0", "1"], repeat=x): +        p = "".join(p) +        if "11" not in p: +            ret += 1 +    return ret -        # 上からおりてくる -        tmp += dp[i - 1][j] * pattern(j - 1) * pattern(W - j - 2) % mod -        # 左からおりてくる -        if j > 0: -            tmp += dp[i - 1][j - 1] * pattern(j - 2) * pattern(W - j - 2) % mod -        # 右からおりてくる -        if j < W - 1: -            tmp += dp[i - 1][j + 1] * pattern(j - 1) * pattern(W - j - 3) % mod -        dp[i][j] += tmp +        if j > 0:  # 左から +            tmp += dp[i - 1][j - 1] * calc(j - 2) * calc(W - j - 2) % mod +        # 上から +        tmp += dp[i - 1][j] * calc(j - 1) * calc(W - j - 2) % mod +        if j + 1 < W:  # 右から +            tmp += dp[i - 1][j + 1] * calc(j - 1) * calc(W - j - 3) % mod +        dp[i][j] = tmp