#include <iostream>
using namespace std;
int big = 1000000000;
int bank(int j, int* c, int* b, int n)
{
if (j < 0) return big;
if (j == 0) return c[j] == 0;
if (c[j] > 0) return c[j];
c[j] = big; int d;
for (int i = 0; i < n; i++)
{
d = bank(j - b[i], c, b, n);
if (d < c[j]) c[j] = d;
}
c[j]++;
return c[j];
}
int main()
{
int b[] = { 1,4,6 };
int n = sizeof(b) / sizeof(int);
int s = 8;
int* c = new int[s + 1]();
cout << bank(s, c, b, n) << endl;
delete[] c;
return 0;
}