import Control.Monad
import Data.List

bil n = replicateM n [1,0]

chk [] = True
chk [_] = True
chk (a:b:r) | a==1 && b==1 = False
chk (_:r) = chk r

ami1 ([],_) = Nothing
ami1 ([a],_) = Just(a, ([],[]))
ami1 (a:b:u, 1:r) = Just(b, (a:u,r))
ami1 (a:u, _:r) = Just(a, (u,r))

amitr pr = map (unfoldr ami1 . (,) pr)

amisum = foldl' (\al bl->map (\(a,b)->(a+b)`mod`1000000007) $ zip al bl)

amih n bl ac = amisum (replicate n 0) $ amitr ac bl

main = do
    (h:w:k:_)<-map read.words<$>getLine::IO[Int]
    let bl = filter chk $ bil $ w-1
    print $ (!! (k-1)) $ (!! h) $ iterate (amih w bl) $ 1:replicate (w-1) 0
