#include <bits/stdc++.h>
#define ll long long
#define mod 1000000007
#define N 109
using namespace std;
int c[N][N],n,m,K,dp[2][N][N][N],Ans;
void add(int &x,int y)
{
x=(x+y>=mod)?x+y-mod:x+y;
}
int main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>n>>m>>K;
c[0][0]=1;
for (int i=1;i<=K;i++)
for (int j=0;j<=i;j++)
{
c[i][j]=(j?c[i-1][j-1]:0)+c[i-1][j];
if (c[i][j]>K) c[i][j]=K+1;
}
n++;
int now=1,last=0;
dp[now][0][1][1]=1;
for (int i=0;i<=m;i++)
{
last=now,now^=1;
if (i)
{
int tmp=0;
for (int j=2;j<=n;j++)
for (int l=1;l<=K;l++) add(tmp,dp[last][j][0][l]);
add(Ans,(ll)tmp*(m-i+1)%mod);
}
if (i==m) break;
memset(dp[now],0,sizeof(dp[now]));
for (int j=0;j<=n;j++)
for (int k=1;k<=n;k++)
for (int l=1;l<=K;l++)
if (dp[last][j][k][l])
for (int t=k;t<=n-j;t++)
if (l*c[t-1][k-1]<=K)
add(dp[now][j+t][t-k][l*c[t-1][k-1]],dp[last][j][k][l]);
}
cout<<Ans<<'\n';
return 0;
}
No Comments