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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <set>

int zaw[3];
int poj[3];
int sta[3];
int sol[100001];
struct state{
    int poj[3];
    state(int a,int b,int c){
        poj[0]=(a);
        poj[1]=(b);
        poj[2]=(c);
        };
};
bool operator<(const state& a, const state& b) {
        if(a.poj[0]==b.poj[0]){
            return a.poj[1]<b.poj[1];
        }
        return (a.poj[0]<b.poj[0]);
    
    }
std::set<state> odwiedzone;
std::vector<state>act;
void check(int a,int b,int c){
    //std::cout<<"check "<<a<<" "<<b<<" "<<c<<std::endl;
    state x(a,b,c);
    if(odwiedzone.count(x)==0){
        //std::cout<<"new"<<std::endl;
        odwiedzone.insert(x);
        act.push_back(x);
    }
        
}
int main(){
    std::ios_base::sync_with_stdio(0);
    std::cin>>poj[0]>>poj[1]>>poj[2];
    std::cin>>zaw[0]>>zaw[1]>>zaw[2];
    act.emplace_back(zaw[0],zaw[1],zaw[2]);
    odwiedzone.emplace(zaw[0],zaw[1],zaw[2]);
    for(int i=0;i<=poj[2];i++)
        sol[i]=1e9;
    int i=0;
    int res=0;
    
    while(i<act.size()){
        int j=act.size();
        for(;i<j;i++){
            //std::cout<<res<<" "<<act[i].poj[0]<<" "<<act[i].poj[1]<<" "<<act[i].poj[2]<<std::endl;
            for(int k=0;k<3;k++)
                sol[act[i].poj[k]]=std::min(sol[act[i].poj[k]],res);
            for(int z=0;z<3;z++)
                for(int d=0;d<3;d++)
                    if(z!=d){
                        sta[d]=std::min(act[i].poj[z]+act[i].poj[d],poj[d]);
                        sta[z]=act[i].poj[z]+act[i].poj[d]-sta[d];
                        sta[3-z-d]=act[i].poj[3-z-d];
                        check(sta[0],sta[1],sta[2]);
                    }
            
        }
        res++;
    }
    for(int i=0;i<=poj[2];i++)
        std::cout<<(sol[i]<1e9?sol[i]:-1)<<" ";
    std::cout<<std::endl;
    
    
    return 0;
}