import std.stdio, std.conv, std.string, std.algorithm.searching, std.algorithm.sorting, std.algorithm.iteration, std.math, std.random, std.range;

void main()
{
    const MOD = 1000000007;
    int[] input = readln().split.to!(int[]);
    int H = input[0];
    int W = input[1];
    int K = input[2];

    int[][] dp;
    dp.length = W;
    dp.each!((ref a)=>a.length=H+1);
    dp[0][0] = 1;

    foreach(h; 0..H)
    {
        foreach(w; 0..W)
        {
            for(int i = 0;i < 1 << (W-1);i++)
            {
                bool ok = true;
                for(int k = 0;k < W-2;k++)
                {
                    if((i >> k & 1) && (i >> k+1 & 1))
                    {
                        ok = false;
                    }
                }
                if(ok == false)
                {
                    continue;
                }
                //左側
                if(w >= 1 && i >> w-1 & 1)
                {
                    dp[w-1][h+1] += dp[w][h];
                    dp[w-1][h+1] %= MOD;
                } //右側
                else if(w <= W-2 && i >> w & 1)
                {
                    dp[w+1][h+1] += dp[w][h];
                    dp[w+1][h+1] %= MOD;
                } //移動しない
                else
                {
                    dp[w][h+1] += dp[w][h];
                    dp[w][h+1] %= MOD;
                }
            }
        }
    }
    writeln(dp[K-1][$-1]);
}
