using System;
using System.Linq;
public class Program
{
public static void Main()
{
const int N = 5, K = 3;
// 1 represents +, 0 represents -
var results =
Enumerable.Range(0, 1 << N)
.Select(bits =>
{
var permutation =
Enumerable.Range(0, N)
.Select(n => ((bits & (1 << n)) != 0) ? (n + 1) : -(n + 1))
.ToList();
var sum = permutation.Sum();
var str = string.Join(" + ", permutation);
return new {sum, str};
})
.Where(intermediate => intermediate.sum == K)
.Select(intermediate => $"{intermediate.str} = {K}");
Console.WriteLine(string.Join("\n", results));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKCnB1YmxpYyBjbGFzcyBQcm9ncmFtCnsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKICAgIHsKICAgICAgICBjb25zdCBpbnQgTiA9IDUsIEsgPSAzOwoKICAgICAgICAvLyAxIHJlcHJlc2VudHMgKywgMCByZXByZXNlbnRzIC0KICAgICAgICB2YXIgcmVzdWx0cyA9CiAgICAgICAgICAgIEVudW1lcmFibGUuUmFuZ2UoMCwgMSA8PCBOKQogICAgICAgICAgICAgICAgLlNlbGVjdChiaXRzID0+CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcm11dGF0aW9uID0KICAgICAgICAgICAgICAgICAgICAgICAgRW51bWVyYWJsZS5SYW5nZSgwLCBOKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLlNlbGVjdChuID0+ICgoYml0cyAmICgxIDw8IG4pKSAhPSAwKSA/IChuICsgMSkgOiAtKG4gKyAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5Ub0xpc3QoKTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIHN1bSA9IHBlcm11dGF0aW9uLlN1bSgpOwogICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBzdHJpbmcuSm9pbigiICsgIiwgcGVybXV0YXRpb24pOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHtzdW0sIHN0cn07CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLldoZXJlKGludGVybWVkaWF0ZSA9PiBpbnRlcm1lZGlhdGUuc3VtID09IEspCiAgICAgICAgICAgICAgICAuU2VsZWN0KGludGVybWVkaWF0ZSA9PiAkIntpbnRlcm1lZGlhdGUuc3RyfSA9IHtLfSIpOwoKICAgICAgICBDb25zb2xlLldyaXRlTGluZShzdHJpbmcuSm9pbigiXG4iLCByZXN1bHRzKSk7CiAgICB9Cn0K