#include #include #include #include using namespace std; #define FNAME "coins.txt" #define cin fin ifstream fin(FNAME); #define NCOIN_MAX 10 #define INFTY INT_MAX #define AN_MAX 10000 int ncoin; int COIN[NCOIN_MAX+1]; int M[2*AN_MAX]; int main() { while ( cin >> ncoin ) { ncoin++; COIN[0] = 1; for ( int i = 1; i < ncoin; i++ ) cin >> COIN[i]; const int an = COIN[ncoin-1]; queue Q; for ( int n = 0; n < 2*an; n++ ) M[n] = INFTY; M[0] = 0, Q.push(0); while ( !Q.empty() ) { const int n = Q.front(); Q.pop(); for ( int i = 0; i < ncoin; i++ ) { if ( n+COIN[i] < 2*an && M[n+COIN[i]] == INFTY ) M[n+COIN[i]] = M[n]+1, Q.push(n+COIN[i]); if ( n-COIN[i] >= 0 && M[n-COIN[i]] == INFTY ) M[n-COIN[i]] = M[n]+1, Q.push(n-COIN[i]); } } int mpMax = 0; for ( int p = 1; p < an; p++ ) mpMax = max(mpMax, M[p]); cout << mpMax << endl; } return 0; }