let ( +^ ) x y = (x + y) mod 1000000007

let denote_amida amida k =
  if 0 < amida land (1 lsl k) then k + 1
  else if 0 <= k && 0 < amida land (1 lsl (k - 1)) then k - 1
  else k

let () = Scanf.scanf "%d %d %d" @@ fun h w k ->
  let valid_amidas =
    List.filter (fun amida -> amida land (amida lsl 1) = 0) @@
    Array.to_list @@
    Array.init (1 lsl (w - 1)) @@ fun admida -> admida in
  let dp = Array.make_matrix (h + 1) w 0 in
  dp.(0).(0) <- 1;
  for i = 1 to h do
    for j = 0 to w - 1 do
      List.iter (fun amida ->
        dp.(i).(denote_amida amida j) <- dp.(i - 1).(j) +^ dp.(i).(denote_amida amida j)) valid_amidas
    done
  done;
  Printf.printf "%d\n" dp.(h).(k - 1)