#include <iostream>
#include <array>
#include <vector>
using namespace std;
constexpr int MAXCENTS = 100000;
array<long long, MAXCENTS + 1> ways;
void dp(vector<int> coins, int value)
{
ways.fill(0);
ways[0] = 1;
for (int coin : coins) {
for (int v = coin; v <= value; ++v) {
ways[v] = ways[v - coin] + ways[v];
}
}
}
int main()
{
dp({1, 2, 5, 10, 25, 100, 200}, 500);
cout << ways[500] << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDx2ZWN0b3I+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdGV4cHIgaW50IE1BWENFTlRTID0gMTAwMDAwOwoKYXJyYXk8bG9uZyBsb25nLCBNQVhDRU5UUyArIDE+IHdheXM7Cgp2b2lkIGRwKHZlY3RvcjxpbnQ+IGNvaW5zLCBpbnQgdmFsdWUpCnsKCXdheXMuZmlsbCgwKTsKCXdheXNbMF0gPSAxOwoJZm9yIChpbnQgY29pbiA6IGNvaW5zKSB7CgkJZm9yIChpbnQgdiA9IGNvaW47IHYgPD0gdmFsdWU7ICsrdikgewoJCQl3YXlzW3ZdID0gd2F5c1t2IC0gY29pbl0gKyB3YXlzW3ZdOwoJCX0KCX0KfQoKaW50IG1haW4oKSAKewoJZHAoezEsIDIsIDUsIDEwLCAyNSwgMTAwLCAyMDB9LCA1MDApOwoJY291dCA8PCB3YXlzWzUwMF0gPDwgZW5kbDsKCXJldHVybiAwOwp9