#include<iostream>
using namespace std;
#define max 10010
int c1[max],c2[max]; //c1存结果,c2存临时处理数据
//Y=(1+x+x^2+x^3+x^4…+x^n1*1)*(1+x^2+x^4+x^6…x^n2*2)*(1+x^5+x^10+…x^n3*5)
int main()
{
int num[3];
int val[] = {1, 2, 5};
while( scanf("%d%d%d", &num[0], &num[1], &num[2])!=EOF && (num[0]+num[1]+num[2]) )
{
int n = num[0]*1+num[1]*2+num[2]*5; //n为x的指数,代表最后所有的硬币的总价值
memset(c1, 0, sizeof(c1) );
memset(c2, 0, sizeof(c2) );
for(int i=0; i<=num[0]; i+=val[0]) //第一个括号内的每个项项数初始化为1
{
c1[i]= 1;
}
for(int i=1; i<=2; i++) //第i个括号
{
for(int j=0; j<=n; j++) //括号内第j项
for(int k=0; k+j<=n && k<=num[i]*val[i]; k+=val[i]) //第j项的指数
c2[j+k] +=c1[j];
for(int i=0; i<=n; i++) //每两个括号内相乘,将值赋给c1
{c1[i] = c2[i]; c2[i]=0;}
}
for(int i=0; i<=n+1; i++) //注意是到n+1, 因为有可能前n个都可以,n+1个事超过了说给金币的全数量和
if(c1[i] == 0)
{printf("%d
", i); break;}
}
return 0;
}
/*
Given some Chinese Coins (硬币) (three kinds-- 1, 2, 5), and their number is num_1, num_2 and num_5 respectively, please output the minimum value that you cannot pay with given coins.”
You, super ACMer, should solve the problem easily, and don’t forget to take $25000000 from Bush!
Input
Input contains multiple test cases. Each test case contains 3 positive integers num_1, num_2 and num_5 (0<=num_i<=1000). A test case containing 0 0 0 terminates the input and this test case is not to be processed.
Output
Output the minimum positive value that one cannot pay with given coins, one line for one case.
Sample Input
1 1 3
0 0 0
Sample Output
4
*/