/*
author: Hitman47
@ayusofayush
count the number of path
*/
#include<bits/stdc++.h>
#define ll long long
#define fast ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
int mat[100][100] = {{4,7,1,6},
{5,7,3,9},
{3,2,1,2},
{7,1,6,3}};
int dp[100][100][100];
int CountPathGrid(int n,int m,int x)
{
if(x<0)
return 0;
if(m==0 && n==0)
{
if((mat[0][0] - x) ==0)
return 1;
else
return 0;
}
if(dp[n][m][x]!=-1)
return dp[n][m][x];
if(n==0)
return dp[n][m][x] = CountPathGrid(n,m-1,x-mat[n][m]);
if(m==0)
return dp[n][m][x] = CountPathGrid(n-1,m,x-mat[n][m]);
return dp[n][m][x] = CountPathGrid(n,m-1,x-mat[n][m]) +
CountPathGrid(n-1,m,x-mat[n][m]);
}
int main()
{
int n=4,m=4,cost=25;//cin>>n>>m>>cost;
memset(dp,-1,sizeof dp);
cout<<CountPathGrid(n-1,m-1,cost);
return 0;
}
LyoKCWF1dGhvcjogSGl0bWFuNDcKCUBheXVzb2ZheXVzaAoJY291bnQgdGhlIG51bWJlciBvZiBwYXRoIAoqLwoKI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBmYXN0IGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjaW4udGllKDApO2NvdXQudGllKDApOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1hdFsxMDBdWzEwMF0gPSB7ezQsNywxLDZ9LAoJCQkJCXs1LDcsMyw5fSwKCQkJCQl7MywyLDEsMn0sCgkJCQkJezcsMSw2LDN9fTsKaW50IGRwWzEwMF1bMTAwXVsxMDBdOwppbnQgQ291bnRQYXRoR3JpZChpbnQgbixpbnQgbSxpbnQgeCkKewoJaWYoeDwwKQoJCXJldHVybiAwOwoJaWYobT09MCAmJiBuPT0wKQoJewoJCWlmKChtYXRbMF1bMF0gLSB4KSA9PTApCgkJCXJldHVybiAxOwoJCWVsc2UKCQkJcmV0dXJuIDA7Cgl9CglpZihkcFtuXVttXVt4XSE9LTEpCgkJcmV0dXJuIGRwW25dW21dW3hdOwoJaWYobj09MCkKCQlyZXR1cm4gZHBbbl1bbV1beF0gPSBDb3VudFBhdGhHcmlkKG4sbS0xLHgtbWF0W25dW21dKTsKCWlmKG09PTApCgkJcmV0dXJuIGRwW25dW21dW3hdID0gQ291bnRQYXRoR3JpZChuLTEsbSx4LW1hdFtuXVttXSk7CglyZXR1cm4gZHBbbl1bbV1beF0gPSBDb3VudFBhdGhHcmlkKG4sbS0xLHgtbWF0W25dW21dKSArIAoJCQlDb3VudFBhdGhHcmlkKG4tMSxtLHgtbWF0W25dW21dKTsKfQoKaW50IG1haW4oKQp7CQoJaW50IG49NCxtPTQsY29zdD0yNTsvL2Npbj4+bj4+bT4+Y29zdDsKCW1lbXNldChkcCwtMSxzaXplb2YgZHApOwoJY291dDw8Q291bnRQYXRoR3JpZChuLTEsbS0xLGNvc3QpOwkKCQoJcmV0dXJuIDA7Cn0=