#include<bits/stdc++.h>
#define ll long long
using namespace std;
int matrix(vector<int>coin,ll amount){
ll row=coin.size(); //0 to amount
ll col=amount; // 0 to coins we have
ll solution[row+1][col+1];
for(ll i=0;i<=row;i++){
solution[i][0]=1; // since with coins greater than>= 0 we able to make 0 amount
}
for(ll i=1;i<=col;i++){
solution[0][i]=0; // but with 0 coin we only make 0 amount so make all amount ie[0][0]
} // so make [0][1] to [0][amount]=0;
for(ll i=1;i<=row;i++){
for(ll j=1;j<=col;j++){
if(coin[i-1]<=j){ // coins we have less than the amount means we can use it
solution[i][j]=solution[i-1][j]+solution[i][j-coin[i-1]];
}
else{ // else we exclude the coin
solution[i][j]=solution[i-1][j];
}
}
}
cout<<solution[row][col]<<"\n"; //finally return the rightmost corner element in the matrix
// it gives the coins need to get desired amount
return 0;
}
int main(){
vector<int> coin{1,5,10,25,50};
ll amount;
cin>>amount;
matrix(coin,amount);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYXRyaXgodmVjdG9yPGludD5jb2luLGxsIGFtb3VudCl7CgpsbCByb3c9Y29pbi5zaXplKCk7ICAvLzAgdG8gYW1vdW50CmxsIGNvbD1hbW91bnQ7ICAgICAgIC8vIDAgdG8gY29pbnMgd2UgaGF2ZQogbGwgc29sdXRpb25bcm93KzFdW2NvbCsxXTsKICAKICBmb3IobGwgaT0wO2k8PXJvdztpKyspewogIAlzb2x1dGlvbltpXVswXT0xOyAgIC8vIHNpbmNlIHdpdGggY29pbnMgZ3JlYXRlciB0aGFuPj0gMCB3ZSBhYmxlIHRvIG1ha2UgMCBhbW91bnQKICB9ICAgICAgICAgICAgICAgICAgICAgICAgCiAgZm9yKGxsIGk9MTtpPD1jb2w7aSsrKXsKICAJc29sdXRpb25bMF1baV09MDsgICAvLyBidXQgd2l0aCAwIGNvaW4gd2Ugb25seSBtYWtlIDAgYW1vdW50IHNvIG1ha2UgYWxsIGFtb3VudCBpZVswXVswXSAKICB9ICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIG1ha2UgWzBdWzFdIHRvIFswXVthbW91bnRdPTA7CiAgICBmb3IobGwgaT0xO2k8PXJvdztpKyspewogICAgCWZvcihsbCBqPTE7ajw9Y29sO2orKyl7CiAgICAJCWlmKGNvaW5baS0xXTw9ail7ICAgICAvLyBjb2lucyB3ZSBoYXZlIGxlc3MgdGhhbiB0aGUgYW1vdW50IG1lYW5zIHdlIGNhbiB1c2UgaXQKICAgIAkJCXNvbHV0aW9uW2ldW2pdPXNvbHV0aW9uW2ktMV1bal0rc29sdXRpb25baV1bai1jb2luW2ktMV1dOwogICAgCQl9CiAgICAJCWVsc2V7ICAgLy8gZWxzZSB3ZSBleGNsdWRlIHRoZSBjb2luCiAgICAJCQlzb2x1dGlvbltpXVtqXT1zb2x1dGlvbltpLTFdW2pdOwogICAgCQl9CiAgICAJfQogICAgfQoKY291dDw8c29sdXRpb25bcm93XVtjb2xdPDwiXG4iOyAgLy9maW5hbGx5IHJldHVybiB0aGUgcmlnaHRtb3N0IGNvcm5lciBlbGVtZW50IGluIHRoZSBtYXRyaXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IGdpdmVzIHRoZSBjb2lucyBuZWVkIHRvIGdldCBkZXNpcmVkIGFtb3VudApyZXR1cm4gMDsKfSAKCiBpbnQgbWFpbigpewogCXZlY3RvcjxpbnQ+IGNvaW57MSw1LDEwLDI1LDUwfTsKIAlsbCBhbW91bnQ7CiAJY2luPj5hbW91bnQ7CgogCW1hdHJpeChjb2luLGFtb3VudCk7CiAJcmV0dXJuIDA7CiB9