#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 25, M = N*N*N;
int A,B,C;//容量
struct Node{
int a,b,c;
}q[M];//一个三元组存储三个桶当前的存量
bool st[N][N][N];//记录当前牛奶存量情况是否发生过
void bfs() {
int tt = 0,hh = 0;//问题一:初始化错误
//加入根节点
q[0] = {0,0,C};
st[0][0][C] = true;
int W[3] = {A,B,C};
while(hh <= tt) {
Node t = q[hh++];//取出队头元素
//处理该层元素
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
int w[3] = {t.a,t.b,t.c};
int r = min(w[i],W[j]-w[j]);
w[i] -= r;
w[j] += r;
int a = w[0],b = w[1],c = w[2];
if(!st[a][b][c]) {
//假如这对三元组没有用过那就记录下来
q[++tt] = {a,b,c};
st[a][b][c] = true;
}
}
}
}
}
int main() {
int a,b,c;
scanf("%d%d%d",&A,&B,&C);
bfs();
for(int i = 0; i <= C; i++) {
for(int j = 0; j <= B; j++) {
if(st[0][j][i])printf("%d ",i);
}
}
return 0;
}