import java.math.BigInteger;
import java.util.*;
public class Main{
static int mod=1000000007;
//在i时间还剩下j体力时的方案数量 后路
static long[][] arr=new long[3010][1510];
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int d=sc.nextInt();
int t=sc.nextInt();
int m=sc.nextInt();
for (long[] i:arr)
{
Arrays.fill(i, -1);
}
System.out.println(dfs(t,m,d));
}
//d代表距离危险位置的a距离
public static long dfs(int t,int m,int d)
{
if (arr[t][m]!=-1)
{
return arr[t][m];
}
if (t==0)
{
if (m==0)
{
arr[0][0]=1;
return 1;
}
else
{
return 0;
}
}
arr[t][m]=0;
if (m>0)
{
arr[t][m]=(arr[t][m]+dfs(t-1,m-1,d+1))%mod;
}
if (d>1)
{
arr[t][m]=(arr[t][m]+dfs(t-1,m,d-1))%mod;
}
return arr[t][m];
}
}
dfs
记忆化搜索