#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1000000007;
int H,W,K,dp[110][10],s[10][3];
signed main(){
  cin>>H>>W>>K;
  for(int bit=0;bit<(1<<(W-1));bit++){
    bool b=false;
    for(int i=0;i<W-2;i++)
      if((bit>>i)&1&(bit>>(i+1)))b=true;
    if(b)continue;
    for(int i=0;i<W;i++){
      if(i!=0 && ((bit>>(i-1))&1))s[i][0]++;
      else if(i!=W-1 && ((bit>>i)&1))s[i][2]++;
      else s[i][1]++;
    }
  }
  dp[0][0]=1;
  for(int i=0;i<H;i++)
    for(int j=0;j<W;j++)
      for(int k=0;k<3;k++)
        if(0<=j+k-1 && j+k-1<W)dp[i+1][j+k-1]=(dp[i+1][j+k-1]+dp[i][j]*s[j][k]%mod)%mod;
  cout<<dp[H][K-1]<<endl;
}
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
typedef long long ll;


const int MOD = 1e9 + 7;
int H, W, K;
vector<int> fib;
ll ans;


void input() {
    cin >> H >> W >> K;
}


int solve(int n) {
    if (n < 0) return 1;
    return fib[n];
}


int main() {
    input();
    fib = vector<int>(W);
    fib[0] = 1;
    fib[1] = 2;
    for (int i = 2; i < W; i++) fib[i] = fib[i-1] + fib[i-2];
    vector<ll> w1, w2;
    w1 = vector<ll>(W, 0);
    w1[0] = 1;
    rep(i, H) {
        w2 = vector<ll>(W, 0);
        for (int j = 0; j < W; j++) {
            if (j > 0) w2[j-1] = (w2[j-1] + w1[j] * solve(j-2) * solve(W-j-2)) % MOD;
            w2[j] = (w2[j] + w1[j] * solve(j-1) * solve(W-j-2)) % MOD;
            if (j < W - 1) w2[j+1] = (w2[j+1] + w1[j] * solve(j-1) * solve(W-j-3)) % MOD;
        }
        w1 = w2;
    }
    cout << w1[K-1] << endl;
}
