h, w, k = gets.split.map(&:to_i)

def get_pattern h, w, s, k
  if h == 1
    ret = get_pattern_h w, s, k
    ret
  else
    
    ret = (get_pattern(h-1, w, s, k-1) * get_pattern_h(w, k-1, k)) +
    (get_pattern(h-1, w, s, k) * get_pattern_h(w, k, k)) +
    (get_pattern(h-1, w, s, k+1) * get_pattern_h(w, k+1, k))
    ret % 1000000007
  end
end
@gph_cache = {}
def get_pattern_h w, s, k
    if s <= 0 || s > w || k <= 0 || k > w
      0
    elsif w == 1
      s == k ? 1 : 0
    else
      
      
  key = "#{w}_#{s}_#{k}"
  if @gph_cache[key]
    @gph_cache[key]
  else
      ret = 0
      (2 ** (w - 1)).times do |i|
        tmp = i.to_s(2).rjust(w-1, '0')
        if !tmp.include?('11')
          if s == 1
            if k == 1 && tmp[0] == '0'
              ret += 1
            elsif k == 2 && tmp[0] == '1'
              ret += 1
            end
          elsif s  == w
            if k == w && tmp[w - 2] == '0'
              ret += 1
            elsif k == (w - 1) && tmp[w - 2] == '1'
              ret += 1
            end
          else
            if s == k
              if (tmp[s - 2] == '0' && tmp[s-1] == '0')
                ret += 1
              end
            elsif (s - k) == 1
              if (tmp[s - 2] == '1')
                ret += 1
              end
            elsif (s - k) == -1
              if (tmp[s-1] == '1')
                ret += 1
              end
            end
          end
        end
      end
      @gph_cache[key] = ret
  end
      
      
    end  
end
puts get_pattern h, w, 1, k