/*
PROG: milk3
LANG: C
*/

#include
<stdio.h>
#define max 20
typedef 
struct N
{
    
int a[3];
}
N;
int M[max][max][max], W[max], s[3];
set(int i, int j, int k)
{
    N h;
    h.a[
0= i; 
    h.a[
1= j; 
    h.a[
2= k;
    
return h;
}

N pour(N h, 
int i, int j)
{
    
int w;
    w 
= h.a[i];
    
if (w + h.a[j] > s[j])
    
{
        w 
= s[j] - h.a[j];
    }

    h.a[i] 
-= w;
    h.a[j] 
+= w;
    
return h;
}

void search(N h)
{
    
if (M[h.a[0]][h.a[1]][h.a[2]])
    
{
        
return;
    }

    M[h.a[
0]][h.a[1]][h.a[2]] = 1;
    
if (h.a[0== 0)
    
{
        W[h.a[
2]] = 1;
    }

    
int i, j;
    
for (i = 0; i < 3; i++)
    
{
        
for (j = 0; j < 3; j++)
        
{
            
if (i != j)
            
{
                search(pour(h, i, j));
            }

        }

    }

}


int main()
{
    
//FILE * fin = fopen("milk3.in", "r");
    
//FILE * fout = fopen("milk3.out", "w");
    int i, k, j;
    
for (i = 0; i < 3; i++)
    
{
        scanf( 
"%d"&s[i]);
    }

    
for (i = 0; i < max; i++)
    
{
        W[i] 
= 0;
        
for(j = 0; j < max; j++)
        
{
            
for (k = 0; k < max; k++)
            
{
                M[i][j][k] 
= 0;
            }

        }

    }

    search(
set(00, s[2]));
    
for (i = 0; i <= s[2]; i++)
    
{
        
if (W[i] && j)
        
{
            printf( 
"%d", i);
            j 
= 0;
        }

        
else if (W[i])
        
{
            printf( 
" %d", i);
        }

    }

    printf( 
"\n");
    system(
"pause");
    
return 0;
}