#include <bits/stdc++.h>
using namespace std;
#define repl(i, l, r) for (ll i = (l); i < (r); i++)
#define rep(i, n) repl(i, 0, n)
#define CST(x) cout << fixed << setprecision(x)
using ll = long long;
const ll MOD = 1000000007;
const int inf = 1e9 + 10;
const ll INF = 4e18 + 10;
const int dx[9] = {1, 0, -1, 0, 1, -1, -1, 1, 0};
const int dy[9] = {0, 1, 0, -1, 1, 1, -1, -1, 0};
int main() {
	cin.tie(0);
	cout.tie(0);
	ios::sync_with_stdio(false);

	int h, n, k;
	cin >> h >> n >> k;
	vector<vector<ll>> table(n, vector<ll>(n));
	rep(bit, 1 << (n - 1)) {
		vector<int> a(n - 1);
		int p = bit;
		rep(i, n - 1) {
			if (p & 1) a[i] = 1;
			p >>= 1;
		}
		bool flag = 0;
		rep(i, n - 2) {
			if (a[i] + a[i + 1] == 2) flag = 1;
		}
		if (flag) continue;
		vector<int> T(n);
		rep(i, n) T[i] = i;
		rep(i, n - 1) {
			if (a[i] == 1) swap(T[i], T[i + 1]);
		}
		rep(i, n) table[i][T[i]]++;
	}
	vector<vector<ll>> dp(h + 1, vector<ll>(n));
	dp[0][0] = 1;
	rep(i, h) rep(j, n) rep(k, n) dp[i + 1][k] = (dp[i + 1][k] + dp[i][j] * table[j][k] % MOD) % MOD;
	cout << dp[h][k - 1] << endl;
	return 0;
}
#include <bits/stdc++.h>
using namespace std;
#define REP(i,n) for(int i=0;i<(n);i++)
#define N 105
#define INF 1000000000
typedef long long ll;
#define ALL(v) (v).begin(),(v).end()
#define SZ(x) int(x.size())
#define IN(a) cin>>(a)
#define OUT(a) cout<<(a)<<endl
typedef pair<int,int> P;
const int MAX = 100005;
const int MOD = 1000000007;
int dpo[10];
int dpx[10];
ll dp[105][10];
int w;
int d(int x){
    if(x<=0||x>w)return 1;
    else return (dpo[x]+dpx[x]);
}
int main(){
    int h,k;
    cin>>h>>w>>k;
    dpo[1]=1;dpx[1]=0;
    for(int i=1;i<w;i++){
        dpo[i+1]=dpo[i]+dpx[i];
        dpx[i+1]=dpo[i];
    }
    dp[0][1]=1;
    REP(i,h){
        for(int j=1;j<=w;j++){
            dp[i+1][j]+=(ll)dp[i][j]*d(j-1)*d(w-j);
            //cout<<dp[i][j]<<" "<<d(j-1)<<" "<<d(w-j);
            dp[i+1][j]%=MOD;
            dp[i+1][j]+=dp[i][j+1]*d(w-j-1)*d(j-1);
            dp[i+1][j]+=dp[i][j-1]*d(w-j)*d(j-2);
            dp[i+1][j]%=MOD;
            //OUT(dp[i+1][j]);
        }
    }
    OUT(dp[h][k]);
    return 0;
}