#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <utility>
#include <cmath>
#include <functional>
#include <queue>
//#include <stack>
#include <climits>
#include <map>
#define Rep(i,n) for(int i=0;i<n;i++)
#define For(i,n1,n2) for(int i=n1;i<n2;i++)
#define REP(i,n) for(ll i=0;i<n;i++)
#define FOR(i,n1,n2) for(ll i=n1;i<n2;i++)
#define put(a) cout<<a<<endl;
#define all(a)  (a).begin(),(a).end()
#define SORT(c) sort((c).begin(),(c).end())
using namespace std;
typedef long long ll;
//typedef unsigned long long ull;
typedef pair<int, int> P;

class Modulo{
public:
    //以下x,y,mod>0を想定している
    ll mod;
    vector<ll> factable = {1};
    vector<ll> invtable = {1};
    Modulo(){
        mod = 1e9+7;
    }
    Modulo(ll _mod){
        mod = _mod;
    }
    ll mul(ll x,ll y){
        return ((x%mod)*(y%mod))%mod;
    }
    ll add(ll x,ll y){
        return ((x%mod)+(y%mod))%mod;
    }
    ll sub(ll x,ll y){
        ll d =((x%mod)-(y%mod))%mod;
        if(d>=0)return d;
        else return d+mod;
    }
    ll pow(ll x,ll y){
        //x^y % mod
        if(y<=0)return 1;
        if(y%2==0){
            ll d = pow(x,y/2);
            return ((d%mod)*(d%mod))%mod;
        }else{
            return (x*pow(x,y-1))%mod;
        }
    }
    ll div(ll x, ll y){
        //x/y % mod = x*y^(mod-2) % mod
        return mul(x,pow(y,mod-2));
    }
    ll fac(ll x){
        //x! % mod
        if(factable.size()<=x){
            ll s = factable.size();
            FOR(i,s,x+1){
                factable.push_back(mul(i,factable.back()));
                invtable.push_back(div(1,factable.back()));
            }
        }
        if(x<0) return 1;
        else return factable[x];
    }
    ll facinv(ll x){
        if(invtable.size()<=x){
            ll s = invtable.size();
            FOR(i,s,x+1){
                factable.push_back(mul(i,factable.back()));
                invtable.push_back(div(1,factable.back()));
            }
        }
        if(x<0) return 1;
        else return invtable[x];
    }
    ll com(ll x,ll y){
        //xCy % mod = x!/((x-y)!*y!) % mod
        if(x-y<y)return com(x,x-y);
        return mul(fac(x),mul(facinv(x-y),facinv(y)));
    }
};

ll h,w,k;

ll func(ll num){
    if(num<0){
        return 0;
    }else if(num%2==0){
        return num/2;
    }else{
        return num/2+1;
    }
}



int main(){
    Modulo m(1e9+7);
    cin >> h >> w >> k;
    vector<vector<ll>> dp(h+1,vector<ll>(w,0));
    dp[0][0] = 1;
    REP(i,h){
        REP(j,w){
            for(ll k=0;k<(1<<(w-1));++k){
                bool ucon = true;
                REP(l,w-2){
                    if(((k>>l)&1)&&(k>>(l+1))&1){
                        ucon = false;
                    }
                }
                if(ucon){
                    if(j<w-1&&(k>>j)&1){
                        dp[i+1][j] = m.add(dp[i+1][j],dp[i][j+1]);
                    }else if(0<j &&(k>>(j-1))&1){
                        dp[i+1][j] = m.add(dp[i+1][j],dp[i][j-1]);
                    }else{
                        dp[i+1][j] = m.add(dp[i+1][j],dp[i][j]);
                    }
                }
            }
        }
    }
    put(dp[h][k-1]);
    return 0;
}



Measured memory_bytes: 256