1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <bits/stdc++.h>
using namespace std;
const int MX=100100,MQ=MX*7;
int n,i,j,cur,d,st,tot,fi,fr,a[3],b[3],qx[MQ],qy[MQ],dst[3][2][MX],ans[MX];
void upd(int i, int j, int k, int d) {
  if (dst[i][j][k]==0) {
    dst[i][j][k]=d;
    qx[fr]=i*2+j;
    qy[fr++]=k;
  }
}
void proceed(int d) {
  for (i=0; i<3; i++) for (j=0; j<3; j++) if (i!=j) {
    if (b[i]<=a[j]-b[j]) {
      cur=b[i];
      st=i;
    } else {
      cur=a[j]-b[j];
      st=j;
    }
    b[j]+=cur;
    b[i]-=cur;
    upd(st,int(b[st]==a[st]),b[int(st==0)],d);
    b[i]+=cur;
    b[j]-=cur;
  }
}
int main() {
  memset(ans,255,sizeof(ans));
  for (i=0; i<3; i++) scanf("%d",&a[i]);
  for (i=0; i<3; i++) {
    scanf("%d",&b[i]);
    ans[b[i]]=0;
    tot+=b[i];
  }
  proceed(1);
  for (fi=0; fi<fr; fi++) {
    st=qx[fi]/2;
    if (qx[fi]&1) b[st]=a[st]; else b[st]=0;
    if (st==0) {
      b[1]=qy[fi];
      b[2]=tot-b[1]-b[0];
    } else {
      b[0]=qy[fi];
      b[st^3]=tot-b[0]-b[st];
    }
    d=dst[st][qx[fi]&1][qy[fi]];
    for (i=0; i<3; i++) if (ans[b[i]]==-1) ans[b[i]]=d;
    proceed(d+1);
  }
  for (i=0; i<=a[2]; i++) printf("%d%c",ans[i],(i==a[2])?'\n':' ');
  return 0;
}