_sum=7
_set=[1,1,2,3,4,6]
current_idx = 0
sum_mapping = [[-1 for i in range(len(_set) + 1)] for i in range(_sum)]
max_sum = _set[current_idx]
for i in range(0, _sum):
current_sum = i + 1
for j in [i for i in range(0, current_idx+1)][::-1] + \
[i for i in range(current_idx + 1, len(_set))]:
required_value = current_sum - _set[j]
if required_value < 0:
break
if required_value == 0 or sum_mapping[required_value - 1][j] != -1:
_j = j + 1
sum_mapping[i][_j:] = [j]*(len(_set) - j)
break
if max_sum == current_sum:
current_idx = current_idx + 1
max_sum = max_sum + _set[current_idx]
_cur = sum_mapping[_sum-1][len(_set)]
if _cur != -1:
_l_sum = _sum
while _l_sum != 0:
print(_set[_cur])
_l_sum = _l_sum - _set[_cur]
_cur = sum_mapping[_l_sum -1][len(_set)]
X3N1bT03Cl9zZXQ9WzEsMSwyLDMsNCw2XQoKY3VycmVudF9pZHggPSAwCgpzdW1fbWFwcGluZyA9IFtbLTEgZm9yIGkgaW4gcmFuZ2UobGVuKF9zZXQpICsgMSldIGZvciBpIGluIHJhbmdlKF9zdW0pXQptYXhfc3VtID0gX3NldFtjdXJyZW50X2lkeF0KZm9yIGkgaW4gcmFuZ2UoMCwgX3N1bSk6CiAgICBjdXJyZW50X3N1bSA9IGkgKyAxCiAgICBmb3IgaiBpbiBbaSBmb3IgaSBpbiByYW5nZSgwLCBjdXJyZW50X2lkeCsxKV1bOjotMV0gKyBcCiAgICAgICAgW2kgZm9yIGkgaW4gcmFuZ2UoY3VycmVudF9pZHggKyAxLCBsZW4oX3NldCkpXToKICAgICAgICByZXF1aXJlZF92YWx1ZSA9IGN1cnJlbnRfc3VtIC0gX3NldFtqXQogICAgICAgIGlmIHJlcXVpcmVkX3ZhbHVlIDwgMDoKICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiByZXF1aXJlZF92YWx1ZSA9PSAwIG9yIHN1bV9tYXBwaW5nW3JlcXVpcmVkX3ZhbHVlIC0gMV1bal0gIT0gLTE6CiAgICAgICAgICAgIF9qID0gaiArIDEKICAgICAgICAgICAgc3VtX21hcHBpbmdbaV1bX2o6XSA9IFtqXSoobGVuKF9zZXQpIC0gaikKICAgICAgICAgICAgYnJlYWsKICAgIGlmIG1heF9zdW0gPT0gY3VycmVudF9zdW06CiAgICAgICAgY3VycmVudF9pZHggPSBjdXJyZW50X2lkeCArIDEKICAgICAgICBtYXhfc3VtID0gbWF4X3N1bSArIF9zZXRbY3VycmVudF9pZHhdCgpfY3VyID0gc3VtX21hcHBpbmdbX3N1bS0xXVtsZW4oX3NldCldCgppZiBfY3VyICE9IC0xOgogICAgX2xfc3VtID0gX3N1bQogICAgd2hpbGUgX2xfc3VtICE9IDA6CiAgICAgICAgcHJpbnQoX3NldFtfY3VyXSkKICAgICAgICBfbF9zdW0gPSBfbF9zdW0gLSBfc2V0W19jdXJdCiAgICAgICAgX2N1ciA9IHN1bV9tYXBwaW5nW19sX3N1bSAtMV1bbGVuKF9zZXQpXQo=