def as_sum(input):
if input != 0:
yield [input]
for i in xrange(input, input/2, -1):
for v in list(as_sum(input-i)):
yield [i] + v
if input > 0 and input % 2 == 0:
for v in list(as_sum(input/2)):
if len(v) > 1:
yield [input/2] + v
value = 16
for sum in as_sum(value):
print " + ". join([str(i) for i in sum])
ZGVmIGFzX3N1bShpbnB1dCk6CglpZiBpbnB1dCAhPSAwOgoJCXlpZWxkIFtpbnB1dF0KCQkKCWZvciBpIGluIHhyYW5nZShpbnB1dCwgaW5wdXQvMiwgLTEpOgoJCWZvciB2IGluIGxpc3QoYXNfc3VtKGlucHV0LWkpKToKCQkJeWllbGQgW2ldICsgdgoJCQkJCQkKCWlmIGlucHV0ID4gMCBhbmQgaW5wdXQgJSAyID09IDA6CgkJZm9yIHYgaW4gbGlzdChhc19zdW0oaW5wdXQvMikpOgoJCQlpZiBsZW4odikgPiAxOgoJCQkJeWllbGQgW2lucHV0LzJdICsgdgoKCQp2YWx1ZSA9IDE2CgkJCmZvciBzdW0gaW4gYXNfc3VtKHZhbHVlKToKCXByaW50ICIgKyAiLiBqb2luKFtzdHIoaSkgZm9yIGkgaW4gc3VtXSkKCQoJCQo=