1 #include <bits/stdc++.h>
2 using namespace std;
3
4 const int maxn=1000+5,INF=~0u>>1;
5 int sum,t;
6 int x[3],h[3],g[3],m[6]={100,50,20,10,5,1},num[6];
7 int cnt[3][6];
8 int f[2][maxn][maxn];
9 inline void solve(){
10 if(g[0]<0||g[1]<0||g[2]<0){ puts("impossible"); return; }
11 for(int j=0;j<maxn;j++)for(int k=0;k<maxn;k++) f[0][j][k]=f[1][j][k]=INF;
12 f[1][h[0]][h[1]]=0;
13 for(int i=0;i<6;i++){
14 for(int j=0;j<maxn;j++)for(int k=0;k<maxn;k++) f[t][j][k]=INF;
15 for(int j=0;j<=sum;j++)for(int k=0;k+j<=sum;k++){
16 if(f[t^1][j][k]<INF){
17 for(int a=0;a<=num[i];a++)for(int b=0;a+b<=num[i];b++){
18 int ta=j+m[i]*(a-cnt[0][i]),tb=k+m[i]*(b-cnt[1][i]);
19 if(ta>=0&&tb>=0&&ta+tb<=sum){
20 int d=(abs(cnt[0][i]-a)+abs(cnt[1][i]-b)+abs(cnt[2][i]-num[i]+a+b))/2;
21 f[t][ta][tb]=min(f[t][ta][tb],f[t^1][j][k]+d);
22 }
23 }
24 }
25 }
26 t^=1;
27 }
28 if(f[t^1][g[0]][g[1]]==INF) puts("impossible");
29 else printf("%d\n",f[t^1][g[0]][g[1]]);
30 }
31 inline void init(){
32 scanf("%d%d%d",&x[0],&x[1],&x[2]);
33 for(int i=0;i<3;i++)for(int j=0;j<6;j++) scanf("%d",&cnt[i][j]), g[i]+=cnt[i][j]*m[j], h[i]+=cnt[i][j]*m[j], sum+=cnt[i][j]*m[j], num[j]+=cnt[i][j];
34 for(int i=0;i<3;i++) g[i]-=x[i], g[(i+1)%3]+=x[i];
35 }
36 int main(){
37 init();
38 solve();
39 return 0;
40 }