#include #include #include using namespace std; int main(){ long long N; int P,C; cin>>N>>P>>C; int mod=1000000007; int dp[130][P+1][6]; int dp2[130][C+1][6]; int pdice[]={2,3,5,7,11,13}; int cdice[]={4,6,8,9,10,12}; memset(dp,0,sizeof(dp)); memset(dp2,0,sizeof(dp2)); dp[0][0][0]=1; for( int i=1 ; i<=P; i++ )for( int j=0;j<130;j++) for( int k=0; k<6; k++ ){//fill dp[j][i][k] for( int l=0;l<=k; l++){ if(j-pdice[k]>=0)dp[j][i][k]+=dp[j-pdice[k]][i-1][l]; } } for(int i=0;i<130;i++){ for(int k=0; k<6; k++){ dp2[i][0][0]+=dp[i][P][k]; } } for( int i=1 ; i<=C; i++ )for( int j=0;j<130;j++) for( int k=0; k<6; k++ ){//fill dp2[j][i][k] for( int l=0;l<=k; l++){ if(j-cdice[k]>=0)dp2[j][i][k]+=dp2[j-cdice[k]][i-1][l]; } } int pattern[130]; memset(pattern,0,sizeof(pattern)); int aSize=0; for(int i=0;i<130;i++){ for( int k=0;k<6;k++){ pattern[i]+=dp2[i][C][k]; } //cout << i<<","<0) aSize=max(aSize,i); } int A[aSize][aSize]; int V[aSize]; memset(A,0,sizeof(A)); memset(V,0,sizeof(V)); V[0]=1; for( int i=0; i0){ if( N%2==1 ){ memset(V2,0,sizeof(V2)); for( int i = 0 ; i