using System.Collections.Generic;
using System.Threading.Tasks;
private const int MaxScore = 100;
public static void Main(string[] args)
PrintScores(MaxScore, 3, 5, 7);
private static void PrintScores(int maxValue, params int[] possiblePoints)
var scores = new HashSet<int>();
var first = possiblePoints[0];
for (var i = 1; i < possiblePoints.Length; i++)
for (var j = i; j < possiblePoints.Length; j++)
for (var k = 0; k < MaxScore; k++)
for (var l = 0; l < MaxScore; l++)
if (k * first + l * possiblePoints[i] > MaxScore) break;
scores.Add(k * first + l * possiblePoints[i]);
scores.Add(k * first + l * possiblePoints[j]);
foreach (var score in scores.Where(o => o <= MaxScore).OrderBy(o => o))
Console.WriteLine(score);